我们正在使用ServiceStack RedisClient进行缓存。最近我们在Redis和我们的Web服务器之间有一些网络延迟。我们使用PooledRedisClientManager
。发送命令(特别是Get)时,我们注意到以下行为:
我们收到SocketIO例外:
无法从传输连接中读取数据:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机无法响应而建立的连接失败。
连接仍然是开放的 - 只是很慢。
此异常一直传播到我们的代码库,在那里我们处理客户端(即返回池)
因此,来自客户的所有回复都是n-1。例如:
var x = client.Get<string>(id1); //this fails for latency. x = ""
//network restored
var y = client.Get<string>(id2); //y = value(id1)
var z = client.Get<string>(id3); //z = value(id2)
var w = client.Increment(id4); //fails for 'unexpected token' since it gets value(id3)
其他人遇到过这个问题?你是怎么解决的?