redis - 将 ServiceStack.Redis 与 RedisCloud 结合使用

标签 redis servicestack

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

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

Note: the ServiceStack.Redis client connection managers (BasicRedisClientManager and PooledRedisClientManager) should be disabled when working with the Garantia Data Redis Cloud. Use the single DNS provided upon DB creation to access your Redis DB. The Garantia Data Redis Cloud distributes your dataset across multiple shards and efficiently balances the load between these shards.

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

我应该忽略他们的指示并使用 PooledRedisClientManager 吗?我如何使用 RedisCloud 提供的单个 uri 对其进行配置?

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

最佳答案

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

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

关于redis - 将 ServiceStack.Redis 与 RedisCloud 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17768811/

相关文章:

azure - 在 Azure Redis 缓存中安装 RediSearch

redis - hapi js是否使用redis共享session?

c# - 跨 AppDomain 实现引用计数的最佳方式是什么?

database - AWS Elasticache Redis 故障转移

javascript - PubSub 上的 Node Redis 回调

mongodb - 我应该选择什么 : MongoDB/Cassandra/Redis/CouchDB?

c# - 如何通过 HTTPS 实现 ServiceStack.net rest 调用?

servicestack - 更改 ServiceStack GetJsonFromUrl 的超时?

asp.net-mvc - ServiceStack Funq MVC html 帮助程序扩展

angular - 使用 Angular 向 ServiceStack 进行身份验证