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

Redis info doesn't update after client was previously disposed

我正在使用 ServiceStack.Redis 版本 4.0.56 来读取和显示 Redis 服务器信息,如下面 class 所示:

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;
    }
}

问题是,一旦客户端被处理(根据最佳实践),redisClientInfo 属性 总是 returns 旧值,即使我获得了一个新的客户端实例,如上面的 GetInfo 方法所示。

当我省略 redisClient.Dispose 调用时,Info 值全部更新。

我做错了什么?谢谢!

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

原因是 RedisClient 缓存了 INFO 命令,并没有在后续调用时或在客户端管理器处理和使用后更新数据。

这已在 ServiceStack.Redis v4.0.59 中修复。