ServiceStack.Redis使用最佳实践

时间:2013-01-17 04:52:39

标签: redis servicestack

我们有一个系统每秒向Redis缓存发出大约5000个请求。我们一直在寻找在这种情况下使用ServicStack.Redis客户端的最佳实践。

我们的大多数调用都是针对使用Typed客户端的HashSets:

RedisClient redisInstance = new RedisClient();

var redisTypedClient = redisInstance.As < CustomObject > ();
var data = redisTypedClient.GetValueFromHash(redisTypedClient.GetHash("hset:SetId"), recordId);

最初我们将“redisInstance”作为静态对象,它对于少数请求工作正常但是一旦请求数量增加,它就开始抛出以下异常: ServiceStack.Redis.RedisResponseException:意外回复

我们将“redisInstance”更改为本地对象,它开始正常工作。

我们是否以正确的方式使用它仍然有点困惑。所以我的问题是: 我们正在使用吗? PooledRedisClientManager是否比这更好? 还有其他方法吗?

我们有大约10或15种不同类型的redis哈希集,我们经常为每个用户查询。

寻找一些好的建议。

1 个答案:

答案 0 :(得分:1)

您可以尝试取决于管理器

https://github.com/ServiceStack/ServiceStack.Redis/blob/master/tests/ServiceStack.Redis.Tests/ServiceStack.Redis/IRedisClientsManager.cs

repo上的这个测试显示了PooledRedisClientManager的基本用法

https://github.com/ServiceStack/ServiceStack.Redis/blob/master/tests/ServiceStack.Redis.Tests/Issues/PooledRedisClientManagerIssues.cs

using (redisClient = (RedisClient)pool.GetClient())
{
     redisClient.Set("test", DateTime.Now);
}