我正在使用ServiceStack.Redis
版本4.0.56
来阅读和显示Redis服务器信息,如下所示:
using ServiceStack.Redis
class Test
{
private IRedisClientManager clientManager;
public Test()
{
clientManager = new PooledRedisClientManager(10, 10, connectionString);
}
public IDictionary<string, string> GetInfo()
{
var redisClient = redisClientManager.GetClient();
var info = redisClient.Info;
// If commented out, all info values are updated (i.e. uptime, keys etc)
redisClient.Dispose();
return info;
}
}
问题是,只要客户端处置(按照最佳实践),Info
redisClient
属性始终返回旧值,即使我获得了一个新的客户端实例,如图所示在上面的GetInfo
方法中。
当我忽略redisClient.Dispose
来电时,Info
值都会更新。
我做错了什么?谢谢!
答案 0 :(得分:1)
发布此as an issue in Github后,ServiceStack团队成员迅速做出回应。
原因是RedisClient缓存了INFO
命令,并且不会在后续调用中或在将其与客户端管理器一起使用后更新数据。
已在ServiceStack.Redis
v4.0.59
修复此问题。