将ServiceStack.Redis与RedisCloud一起使用

时间:2013-07-21 03:38:02

标签: redis servicestack

使用RedisCloud作为基于ServiceStackAppHarbor托管应用的数据存储区。

RedisCloud .net client documentation声明使用ServiceStack.Redis连接管理器:

  

注意:使用Garantia Data Redis Cloud时,应禁用ServiceStack.Redis客户端连接管理器(BasicRedisClientManager和PooledRedisClientManager)。使用创建数据库时提供的单个DNS访问Redis数据库。 Garantia Data Redis Cloud可跨多个分片分发数据集,并有效平衡这些分片之间的负载。

为什么他们会建议?因为他们在'Garantia Data'层中做了花哨的负载平衡,并且不想处理不必要的连接? RedisClient类不是线程安全的,因此从应用程序编程的角度来看,它会变得更加困难。

我应该忽略他们的说明并使用PooledRedisClientManager吗?如何使用RedisCloud提供的单个uri配置它?

或者我是否需要编写一个基本的RedisClient池包装器,它只需要根据需要创建新的RedisClient连接来处理并发访问(即忽略所有读/写池细节,希望将所有这些都委托给 - 流到RedisCloud层)?

1 个答案:

答案 0 :(得分:1)

为什么他们会建议?因为他们正在他们的Garantia Data'中进行花哨的负载平衡。层并不想处理不必要的连接?
我想你可能是对的。据我所知,这些类只是包装创建/检索RedisClient的实例(但是,我认为Basic总是创建一个新的RedisClient)。当我查看their site时,我没有看到任何与Redis服务器的最大连接数。来自AppHarbor的先前Redis供应商(MyRedis)计划列出每个计划允许的最大连接数。但是,我也没有在网站上看到提及连接限制/处理的任何内容。

我应该忽略他们的指令并使用PooledRedisClientManager吗?如何使用RedisCloud提供的单个uri配置它?
好吧,如果你忽略了他们的指示,我的猜测是你最终可能遇到超过'最大数量的连接。错误。这将使您很难访问您的Redis服务器。我认为您仍然可以使用BasicRedisClientManager,因为当您致电GetClient()时,它始终会被新闻发布' RedisClient与其示例中显示的方式相同。