我正面临一个问题,就像获得“好”等垃圾价值一样。或者' 0' 0或者一些数字'从Redis读取值时的值。在读取普通键和散列键时也会发生这种情况。我们已升级所有服务堆栈组件并仍然面临问题。请在c#
中找到组件详细信息和代码段我们的环境:我们设置了sentinel,每个Sentinel都与Redis实例配对。现在我们设置了三个sentinel实例和三个redis服务器实例。我们使用只读客户端来读取值,使用读写客户端将值写入Redis。即使使用读写客户端进行读写也会给出相同的垃圾值问题。
Components:
ServiceStack.Common v 5.1.0.0
ServiceStack.Redis v 5.1.0.0
ServiceStack.Interfaces v 5.1.0.0
ServiceStack.Text v 5.1.0.0
Redis server v 3.0.503
OS: Windows server 2012 R2
代码段:
private static IredisClientManager m_redisManager;
initializeRedis()
{
if(m_redisManager == null)
{
var sentinel = new RedisSentinel(
"193.168.1.1:16380,193.168.1.2:16380,193.168.1.3:16380"
,"testmaster")
{
RefreshSentinelHostsAfter = 10;
};
sentinel.RedisManagerFactory += (master,slaves)
=> new RedisManagerPool(master);
m_redisManager = sentinel.Start();
}
}
public string GetValue(string key)
{
string val;
using(var client = m_redisManager.GetClient())
{
val = client.GetValue(key);
}
return val;
}
Note:
1。 m_redisManager声明为static,因此它只运行一次。每次通话都会分享这位经理 2.客户在每次通话后处理以获取价值 3.我的应用程序是多线程的,因此可以同时从多个线程读取。并且应用程序也可以从同一台机器和不同的机器进行多种实例化。 4.上面的代码来自与Redis交互的组件。 5.客户端将调用GetValue函数
可能是什么问题?有人可以帮忙吗