Redis command timed out nested exception is io.lettuce.core.RedisCommandTimeoutException

Redis command timed out nested exception is io.lettuce.core.RedisCommandTimeoutException,第1张

Redis command timed out nested exception is io.lettuce.core.RedisCommandTimeoutException 报错信息
ERROR org.springframework.dao.QueryTimeoutException: Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException: Command timed out after 500 millisecond(s)
	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:268)
	at org.springframework.data.redis.connection.lettuce.LettuceListCommands.convertLettuceAccessException(LettuceListCommands.java:490)
	at org.springframework.data.redis.connection.lettuce.LettuceListCommands.lLen(LettuceListCommands.java:159)
	at org.springframework.data.redis.connection.DefaultedRedisConnection.lLen(DefaultedRedisConnection.java:465)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	****
Caused by: io.lettuce.core.RedisCommandTimeoutException: Command timed out after 500 millisecond(s)
	at io.lettuce.core.ExceptionFactory.createTimeoutException(ExceptionFactory.java:51)
	at io.lettuce.core.LettuceFutures.awaitOrCancel(LettuceFutures.java:114)
	at io.lettuce.core.FutureSyncInvocationHandler.handleInvocation(FutureSyncInvocationHandler.java:69)
	at io.lettuce.core.internal.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:80)
	at com.sun.proxy.$Proxy196.llen(Unknown Source)
	at org.springframework.data.redis.connection.lettuce.LettuceListCommands.lLen(LettuceListCommands.java:157)
	... 134 more
原因分析
  • 这个情况是我在将SpringBoot从1.X升级到2.X的时候产生的问题,所以大致可以猜到是版本问题。

解决办法
  • 设置超时时间(不推荐)
redis:
    port: 6379
    jedis:
      pool:
        max-active: 50
        max-wait: 5000
        max-idle: 50
        min-idle: 0
    timeout: 500
    host: 47.100.21.110

这种方法无效,解决不了这个问题,我从0改到500还是报错。但是网上绝大多数都是这种方式,实际上我刚更改过来的时候有效过一阵,之后就又不行了。

  • 更改依赖(亲测有效)

   org.springframework.boot
   spring-boot-starter-data-redis

在SpringBoot 1.X版本的jar包依赖中,点击进去依赖项如下:


	
		org.springframework.boot
		spring-boot-starter
	
	
		org.springframework.data
		spring-data-redis
	
	
		redis.clients
		jedis
	

升级到SpringBoot 2.X版本之后依赖如下:


	
		org.springframework.boot
		spring-boot-starter
		2.1.2.RELEASE
		compile
	
	
		org.springframework.data
		spring-data-redis
		2.1.4.RELEASE
		compile
		
			
				jcl-over-slf4j
				org.slf4j
			
		
	
	
		io.lettuce
		lettuce-core
		5.1.3.RELEASE
		compile
	

可以看到变化是从jedis依赖变成了lettuce-core依赖,而上面的报错io.lettuce.core.RedisCommandTimeoutException也是lettuce-core的异常,所以我的解决方式是先将依赖换回jedis:


	org.springframework.boot
	spring-boot-starter-data-redis
	
		
			io.lettuce
			lettuce-core
		
	


	redis.clients
	jedis

如上,配置文件不变,Redis连接成功,不再报错。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5522720.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存