redis维护问题总结
2019獨角獸企業重金招聘Python工程師標準>>>
1?redis?client連接超時
在用jedis客戶端對redis進行壓力測試時,經常會出現下述錯誤:
Exception?in?thread?"Thread-565"?redis.clients.jedis.exceptions.JedisConnectionException:?java.net.SocketTimeoutException:?Read?timed?out
????????at?redis.clients.jedis.Protocol.process(Protocol.java:79)
????????at?redis.clients.jedis.Protocol.read(Protocol.java:131)
????????at?redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:162)
????????at?redis.clients.jedis.BinaryClient.connect(BinaryClient.java:76)
????????at?redis.clients.jedis.Connection.sendCommand(Connection.java:79)
????????at?redis.clients.jedis.BinaryClient.select(BinaryClient.java:148)
????????at?redis.clients.jedis.Jedis.select(Jedis.java:328)
????????at?RedisThread.run(RedisThread.java:15)
????????at?java.lang.Thread.run(Thread.java:679)
Caused?by:?java.net.SocketTimeoutException:?Read?timed?out
????????at?java.net.SocketInputStream.socketRead0(Native?Method)
????????at?java.net.SocketInputStream.read(SocketInputStream.java:146)
????????at?java.net.SocketInputStream.read(SocketInputStream.java:107)
????????at?redis.clients.util.RedisInputStream.fill(RedisInputStream.java:109)
????????at?redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:45)
????????at?redis.clients.jedis.Protocol.process(Protocol.java:64)
????????...?8?more
從中可以看出,出錯的原因是線程等待超時,斷開連接,所以可以通過手動設置超時時間來避免這個錯誤。查詢Jedis構造函數,可以發現其中一個構造函數如下,可以在其中指出客戶端等待的超時時間:
public?Jedis(final?String?host,?final?int?port,?final?int?timeout)?{
super(host,?port,?timeout);
}
在Jedis對象創建時,在構造函數中按照實際需求設置timeout的大小可以避免上述錯誤的出現。
轉載于:https://my.oschina.net/u/1169607/blog/348687
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的redis维护问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Linux终端乱码的解决办法
- 下一篇: 用再生龙Clonezilla 来克隆Li
