下面是报错信息
Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException: Command timed out
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:70)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:41)
at org.springframework.data.redis.PassThroughExceptionTranslationStrategy.translate(PassThroughExceptionTranslationStrategy.java:44)
at org.springframework.data.redis.FallbackExceptionTranslationStrategy.translate(FallbackExceptionTranslationStrategy.java:42)
at org.springframework.data.redis.connection.lettuce.LettuceConnection.convertLettuceAccessException(LettuceConnection.java:257)
at org.springframework.data.redis.connection.lettuce.LettuceKeyCommands.convertLettuceAccessException(LettuceKeyCommands.java:650)
at org.springframework.data.redis.connection.lettuce.LettuceKeyCommands.keys(LettuceKeyCommands.java:148)
at org.springframework.data.redis.connection.DefaultedRedisConnection.keys(DefaultedRedisConnection.java:75)
at org.springframework.data.redis.core.RedisTemplate.lambda$keys$10(RedisTemplate.java:840)
at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:224)
at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:184)
at org.springframework.data.redis.core.RedisTemplate.keys(RedisTemplate.java:840)
早网上找了找没找到什么有用的解决方案,特来请教
1
ShutTheFu2kUP 2020-07-28 15:47:59 +08:00
mark 一下,也有同样问题
|
2
purensong 2020-07-28 15:49:19 +08:00
好像是 lettuce 的 bug,换驱动吧,jedis 不香吗
|
3
securityCoding 2020-07-28 16:53:10 +08:00
跟源码, 发现问题->解决问题 , 水平就是这样提高的
|
4
kidtest 2020-07-28 16:59:34 +08:00 2
一般这种都是 redis server 中配置了连接的超时时间,如果一个 client 连接在这段时间内没有操作就会被断开。所以首先需要确定 server 的超时时间,这个可以在配置文件中看到,然后一般的 redis 连接池都可以配置客户端的超时时间,将这个超时间配的短于 server 的超时时间即可。
或者笨方法就是自己手动加个判断,如果上次命令执行时间超过了超时时间,自己再创建一个新连接去执行命令 |
5
killergun 2020-07-28 17:03:34 +08:00
应该是连接断开了,客户端没用重新连接,而是用旧的连接
|
6
xuanbg 2020-07-28 17:30:52 +08:00
连接被 redis 断开了,客户端还在使用原先的连接就这样了。我遇到过的情况是 windows 平台的微软 redis 服务会断开客户端,Linux 上的 docker 装的 redis 就不会。
|
7
blueorange 2020-07-28 18:06:41 +08:00
顶一下 , 同样问题
|
8
nekoneko OP |
10
wakzz 2020-07-29 14:51:52 +08:00
开启客户端心跳包吧
|
12
ljw930824 2020-08-17 14:09:04 +08:00
lettuce 超时问题有俩种解决办法
1 、Redis 服务端 通过 tcp-keepalive 发送 ack 达到超活检测效果 官方建议设置 60s 时间 2 、升级 lettuce-core 至 5.3.0+ (具体看此 Fix infinite command timeout #1260 https://github.com/lettuce-io/lettuce-core/issues/1260 ) |
13
ljw930824 2020-08-17 14:19:53 +08:00
@nekoneko 抱歉,实际 这个更贴近 lettuce 中描述的 Bug 被 Block https://github.com/lettuce-io/lettuce-core/issues/1269
|