2

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

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

RedisClient redisInstance = new RedisClient();

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

最初我们将“redisInstance”作为静态对象,它对少数请求运行良好,但一旦请求数量增加,它开始抛出以下异常:ServiceStack.Redis.RedisResponseException: Unexpected reply

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

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

我们有大约 10 或 15 个不同类型的 redis 哈希集,我们非常频繁地为每个用户查询这些哈希集。

寻找一些好的建议。

4

1 回答 1

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);
}
于 2013-03-27T02:56:00.957 回答