客户端先前处理后,Redis信息不会更新

时间:2016-06-09 10:23:27

标签: c# servicestack.redis

我正在使用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值都会更新。

我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

发布此as an issue in Github后,ServiceStack团队成员迅速做出回应。

原因是RedisClient缓存了INFO命令,并且不会在后续调用中或在将其与客户端管理器一起使用后更新数据。

已在ServiceStack.Redis v4.0.59修复此问题。