問題描述
測試Redis分布式鎖的時候,如果一次執行大量數據,系統會報出如下異常:
JedisConnectionException: java.net.SocketTimeoutException: Read timed out
問題分析
redis是基於內存的,所以一般來說響應速度是毫秒級的,但是在本機開發測試遇到海量數量時,會導致socket的延時增加到秒級,由redis.clients.jedis.Protocol.DEFAULT_TIMEOUT = 2000
,我們知道默認的超時時間是2秒。而我設置的socket連接超時時間是spring.redis.timeout=10, 單位 ms(毫秒);故拋出如上異常是正常現象。
問題解決
增大socket連接超時時間spring.redis.timeout,改為1000后,情況好多了。如果你也遇到了這個問題,趕快去增加這個時間吧!