Springboot中redis使用lettuce连接池经常连接超时解决
环境
Springboot 2.4.4 + mysql
redis使用 lettuce作连接池
依赖
<!--springboot中的redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
配置
1. 问题点:项目启动后,一段时间过后redis自动掉线
io.lettuce.core.RedisCommandTimeoutException: Command timed out
2. 问题分析:
这是lettuce-core的实现里,有类似心跳机制的保持长连接方式,不过心跳机制是不停的来回发心跳包直到连接不可用再去被动重新连接,而lettuce的方案是将连接池里处于空闲(idle)状态的client每隔一段时间就主动断开,然后再重新连接。
3.解决方案如下:
-springboot2.3以上版本,可添加配置解决。
文章来源:https://www.toymoban.com/news/detail-505160.html
- 或者排除lettuce,采用jedis。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
结果:redis正常
文章来源地址https://www.toymoban.com/news/detail-505160.html
到了这里,关于异常:Springboot中redis使用lettuce连接池经常连接超时解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!