之前处理客户端后,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;
}
}
问题是,一旦客户端被处理(根据最佳实践),redisClient
的 Info
属性 总是 returns 旧值,即使我获得了一个新的客户端实例,如上面的 GetInfo
方法所示。
当我省略 redisClient.Dispose
调用时,Info
值全部更新。
我做错了什么?谢谢!
发布此 as an issue in Github 后,ServiceStack 团队成员很快做出回应。
原因是 RedisClient 缓存了 INFO
命令,并没有在后续调用时或在客户端管理器处理和使用后更新数据。
这已在 ServiceStack.Redis
v4.0.59
中修复。
我正在使用 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;
}
}
问题是,一旦客户端被处理(根据最佳实践),redisClient
的 Info
属性 总是 returns 旧值,即使我获得了一个新的客户端实例,如上面的 GetInfo
方法所示。
当我省略 redisClient.Dispose
调用时,Info
值全部更新。
我做错了什么?谢谢!
发布此 as an issue in Github 后,ServiceStack 团队成员很快做出回应。
原因是 RedisClient 缓存了 INFO
命令,并没有在后续调用时或在客户端管理器处理和使用后更新数据。
这已在 ServiceStack.Redis
v4.0.59
中修复。