1

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

RedisCloud .net 客户端文档声明使用ServiceStack.Redis连接管理器:

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

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

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

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

4

1 回答 1

1

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

我应该忽略他们的指示并使用 PooledRedisClientManager 吗?如何使用 RedisCloud 提供的单个 uri 配置它?
好吧,如果您确实忽略了他们的指示,我的猜测是您最终可能会遇到“超出最大连接数”错误。这将使访问您的 Redis 服务器变得困难。我认为您仍然可以使用,BasicRedisClientManager因为当您调用GetClient()它时,总是以与示例中所示相同的方式“更新”RedisClient。

于 2013-07-22T20:01:05.010 回答