转载:https://blog.csdn.net/wozniakzhang/article/details/98766926
使用Redis后,会有时出现连接超时问题
io.lettuce.core.RedisCommandTimeoutException: Command timed out after 5 second(s)
at io.lettuce.core.ExceptionFactory.createTimeoutException(ExceptionFactory.java:51) ~[lettuce-core-5.1.6.RELEASE.jar:na]
at io.lettuce.core.LettuceFutures.awaitOrCancel(LettuceFutures.java:114) ~[lettuce-core-5.1.6.RELEASE.jar:na]
***省略一些*******************************************************************
[na:1.8.0_191]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.19.jar:9.0.19]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_191]
解决方法:
1、找到redis.conf配置文件
将tcp-keepalive改成1-50左右的数字,之前是0或者300,改成小一点的数字就行了,原理百度或者根据配置文件的注释英文翻译一下,记得改完重启Redis.
2、在 .properties Redis 配置加入lettuce.shutdown-timeout=100,大于Redis服务器配置的 tcp-keepalive 存活时间(比如60)就行,
你想吧,超时100>60符合正常逻辑,如果超时关闭时长<存活时长(tcp-keepalive)