protected void ExpectSuccess()
{
int c = SafeReadByte();
if (c == -1)
throw CreateResponseError("No more data");
var s = ReadLine();
Log((char)c + s);
if (c == '-')
throw CreateResponseError(s.StartsWith("ERR") && s.Length >= 4 ? s.Substring(4) : s);
}
补充:
BufferedStream Bstream = new BufferedStream(new NetworkStream(socket), 16 * 1024);
private int SafeReadByte()
{
return Bstream.ReadByte();
}
尝试下检测网络环境呢?考虑Redsi服务端超时情况
解决了
windows下的redis确实不太稳定,我也就接触过,没遇到过你这个问题。
@小菜变大鸟: 同感,遇到好多次这样的事情,本地好好的,上到线上就有问题,有的是数据太多的问题,有的是上线版本的问题,有的根本不知道啥问题,只能多试了,加油吧!
我用是StackExchange提供的类库,之前调用都是同步请求的,后来改用提供的异步的方法就没出过这个问题。
@小菜变大鸟: 修正下,我用的stackexchange类库,之前拼写错了。
一般这个问题应该是哪个操作堵塞了,servicestack.redis不熟悉,你看看有没有异步方法调用,或者你可以考虑性能调试工具捕获哪个线程调用的方法花费的时间最长。我用的是Windbg调试分析的。
请教博主,这个问题是如何解决的。我现在也碰到这个问题饿了。。。。
我的是因为连接池里面的我连接对象实际已经断开连接了,但是代码有个地方漏检测了,Ping方法检测要全面,仔细检查下代码
碰到了同样的问题,请教是怎么解决的。
我的是因为连接池里面的我连接对象实际已经断开连接了,但是代码有个地方漏检测了,Ping方法检测要全面,仔细检查下代码