使用RedisCloud作为基于ServiceStack的AppHarbor托管应用的数据存储区。
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层)?
答案 0 :(得分:1)
为什么他们会建议?因为他们正在他们的Garantia Data'中进行花哨的负载平衡。层并不想处理不必要的连接?
我想你可能是对的。据我所知,这些类只是包装创建/检索RedisClient
的实例(但是,我认为Basic总是创建一个新的RedisClient)。当我查看their site时,我没有看到任何与Redis服务器的最大连接数。来自AppHarbor的先前Redis供应商(MyRedis)计划列出每个计划允许的最大连接数。但是,我也没有在网站上看到提及连接限制/处理的任何内容。
我应该忽略他们的指令并使用PooledRedisClientManager吗?如何使用RedisCloud提供的单个uri配置它?
好吧,如果你忽略了他们的指示,我的猜测是你最终可能遇到超过'最大数量的连接。错误。这将使您很难访问您的Redis服务器。我认为您仍然可以使用BasicRedisClientManager
,因为当您致电GetClient()
时,它始终会被新闻发布' RedisClient与其示例中显示的方式相同。