Springboot中redis使用lettuce连接池经常连接超时问题分析及解决

 更新时间:2025年11月17日 08:58:51   作者:夕夕夕兮  
文章主要介绍了在Spring Boot项目中,使用Lettuce作为Redis客户端时遇到的问题——连接在一段时间后会自动掉线,问题的根源在于Lettuce的空闲连接处理机制,文章提供了Spring Boot 2.3及以上版本的解决方案,即通过配置解决,或者排除Lettuce并采用Jedis

环境

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以上版本,可添加配置解决。


  • 或者排除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正常

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中的线程同步与ThreadLocal无锁化线程封闭实现

    Java中的线程同步与ThreadLocal无锁化线程封闭实现

    这篇文章主要介绍了Java中的线程同步与ThreadLocal无锁化线程封闭实现,Synchronized关键字与ThreadLocal变量的使用是Java中线程控制的基础,需要的朋友可以参考下
    2016-03-03
  • Java 8系列之Stream中万能的reduce用法说明

    Java 8系列之Stream中万能的reduce用法说明

    这篇文章主要介绍了Java 8系列之Stream中万能的reduce用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • SpringBoot异步处理实战指南

    SpringBoot异步处理实战指南

    本文讲解了SpringBoot异步处理的核心概念与实现方法,通过@Async注解结合线程池实现非阻塞调用,适用于邮件发送等场景,需配置线程池参数并注意返回值类型、异常处理及代理限制,测试时可通过接口响应和日志验证异步执行效果,感兴趣的朋友一起看看吧
    2025-09-09
  • SpringCloud Gateway网关功能介绍与使用

    SpringCloud Gateway网关功能介绍与使用

    SpringCloud Gateway 是 Spring Cloud 的一个全新项目,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。这篇文章主要介绍了SpringCloud Gateway网关作用,需要的朋友可以参考下
    2022-12-12
  • Java应对高并发的思路和最佳实践

    Java应对高并发的思路和最佳实践

    在工作中我们经常会遇到高并发的问题,这个是很常见的,这篇文章主要介绍了Java应对高并发的思路和最佳实践,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07
  • 关于ReentrantLock原理全面解读

    关于ReentrantLock原理全面解读

    这篇文章主要介绍了关于ReentrantLock原理全面解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Java面试之如何实现10亿数据判重

    Java面试之如何实现10亿数据判重

    当数据量比较大时,使用常规的方式来判重就不行了,所以这篇文章小编主要来和大家介绍一下Java实现10亿数据判重的相关方法,希望对大家有所帮助
    2024-02-02
  • Android与iOS设备MAC地址生成原理及Java实现详解

    Android与iOS设备MAC地址生成原理及Java实现详解

    在无线网络通信中,MAC(Media Access Control)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备MAC地址生成原理以及Java实现方法,需要的可以了解下
    2025-05-05
  • Java并发利器CountDownLatch深度解析与实战应用小结

    Java并发利器CountDownLatch深度解析与实战应用小结

    CountDownLatch就像一个倒计时器,当所有任务完成后,主线程才继续执行,本文将通过简单易懂的方式,带你掌握这个强大的并发工具,需要的朋友可以参考下
    2025-06-06
  • maven依赖的配置和排除依赖过程

    maven依赖的配置和排除依赖过程

    这篇文章主要介绍了maven依赖的配置和排除依赖过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03

最新评论