VB.NET Unknown reply on integer response
VB.NET redis异常及ServiceStack.Redis对多线程的支持
最近在项目中加入了redis,不过遇到了很多redis的异常错误,主要原因在vb.net多线程中Redis操作的时候出现的异常,如 最多的就是Unknown reply on integer response: 4211,sPort: 1620,LastCommand:
这个可能是对ServiceStack.Redis对多线程的支持的不理解造成的
不由怀疑
这玩意到底支持多线程不哦...
然后详细看了下ServiceStack.Redis的文档
然后发现一个惊天的秘密:
这坑爹的ServiceStack.Redis不支持我们传统认为的线程安全啊
ServiceStack.Redis对多线程采用的是连接池
也就是说:
每一个线程可以从连接池里获取一个连接供本线程使用
在使用完毕过后还回给连接池
这样来保证每一个线程使用的Redis连接都是独立的而不会互相干扰
这就是ServiceStack.Redis所谓的ThreadSafe Access
ServiceStack.Redis就是这样来保证线程安全的...
坑爹呢这是...
我们传统意义的线程安全可是多个线程并发访问一个对象啊
而不是多个线程访问不同的对象啊...
都怪我学艺不精啊...
竟然不知道还有这种ThreadSafe Access啊...