redis lettuce连接池经常出现连接拒绝(Connection refused)问题解决

 更新时间:2025年03月06日 09:20:54   作者:青龙老贼  
本文主要介绍了在Windows 10/11系统中使用Spring Boot和Lettuce连接池访问Redis时,遇到的连接拒绝问题,下面就来介绍一下解决方法,感兴趣的可以了解一下

一.软件环境

windows10、11系统、springboot2.x、redis 6 7

linux(centos)系统没有出现这问题,如果你是linux系统碰到的,本文也有一定大参考价值。

根本思路就是:tcp/ip连接的保活(keepalive)。

二.问题描述

在springboot项目中使用了lettuce作为redis的连接池,在本地开发环境windows系统中,隔5分钟不操作,再次需要访问redis时,从连接池获取一个连接去操作redis就会出现连接拒绝,一般直到取完max-idle(最大空闲连接数)所有连接都是连接拒绝,直到开始创建新的连接,才能连接上redis。

三.问题分析

测试环境(linux)连的是同一个redis服务,却没有出现这样的问题。

之前也试着从连接池配置去解决问题,然并卵。。。

    lettuce:
      pool:
        # 连接池最大连接数(使用负值表示没有限制)
        max-active: 8
        # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: 1
        # 连接池中的最大空闲连接
        max-idle: 8
        # 连接池中的最小空闲连接
        min-idle: 0
      cluster:
        refresh:
          adaptive: true
          #20秒自动刷新一次
          period: 20

也试过网上说的各种方法都没有效果。

后面想着,既然在linux系统中运行没问题,windows系统有问题,在其它条件相同的情况下,那就只有操作系统的差异了。

那就可能是两个系统维护tcp/ip的方式的不同了,因为连接池中的连接,本质上就是一个个tcp/ip连接,要想让连接保活,服务端和客户端,至少得有一方去做保活(keepalive)操作。

为什么是隔5分钟不操作,就必然出现redis连接拒绝呢?于是在redis配置文件中搜索“keepalive”发现tcp-keepalive配置,默认300s,这不正好5分钟吗?该配置是服务端每隔300秒检查一下客户端连接,如果可以连通,则让连接保活,如果连不通了,则将连接销毁。

那么导致redis服务端做保活操作后,redis连接就不可用了,应该就是windows系统在这5分钟内,将tcp/ip连接给干掉了,导致redis服务端连接不到就把连接干掉了,而lettuce并不知道连接已经断开了,当有请求需要连接redis时,就从lettuce中拿一个已经被服务端断开连接去操作redis,于是就得到了连接拒绝的响应。

四.解决方案

方案 1:减少redis服务端配置文档的tcp-keepalive的间隔时间,将上图中的设置改为60后,重启服务,经过测试就没有连接拒绝的问题了。

方案2:增加windows系统的tcp/ip连接的存活时间,但是这个修改过几个配置,好像没有效,也有说法是防火墙、杀毒软件的防护策略等管理着tcp/ip的存活时间。如不可用,建议直接使用方案1。

到此这篇关于redis lettuce连接池经常出现连接拒绝(Connection refused)问题解决的文章就介绍到这了,更多相关redis lettuce连接池连接拒绝内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 实现在线 + 离线模式进行迁移 Redis 数据实战指南

    实现在线 + 离线模式进行迁移 Redis 数据实战指南

    这篇文章主要介绍了实现在线 + 离线模式进行迁移 Redis 数据实战指南的相关资料,需要的朋友可以参考下
    2023-01-01
  • Linux下Redis安装配置教程

    Linux下Redis安装配置教程

    这篇文章主要为大家详细介绍了Linux下Redis安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • redis key命名规范的设计

    redis key命名规范的设计

    如果结构规划不合理、命令使用不规范,会造成系统性能达到瓶颈、活动高峰系统可用性下降,也会增大运维难度,本文主要介绍了redis key命名规范的设计,感兴趣的可以了解一下
    2024-03-03
  • Windows下搭建Redis集群的方法步骤

    Windows下搭建Redis集群的方法步骤

    本文主要介绍了Windows下搭建Redis集群的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Redis延迟队列和分布式延迟队列的简答实现

    Redis延迟队列和分布式延迟队列的简答实现

    在我们的工作中,很多地方使用延迟队列,比如订单到期没有付款取消订单,制订一个提醒的任务等都需要延迟队列,那么我们需要实现延迟队列,本文就来介绍一下如何实现,感兴趣的可以了解一下
    2021-05-05
  • Redis中Hash从使用过程到原理说明

    Redis中Hash从使用过程到原理说明

    Redis Hash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化性能,适用于购物车、计数器等场景
    2025-09-09
  • 解决redis在linux上的部署的问题

    解决redis在linux上的部署的问题

    这篇文章主要介绍了redis在linux上的部署,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 使用高斯Redis实现二级索引的方法

    使用高斯Redis实现二级索引的方法

    本文介绍了如何通过高斯Redis搭建二级索引,二级索引在电商、图(hexastore)、游戏等领域具有广泛的应用场景,高斯redis现网亦有很多类似应用,需要的朋友跟随小编一起看看吧
    2022-07-07
  • redis存储空间复杂度和时间复杂度的平衡

    redis存储空间复杂度和时间复杂度的平衡

    本文主要介绍了在奖品概率计算中,如何平衡内存占用和时间复杂度,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-02-02
  • Redis报错:无法连接Redis服务的解决方法

    Redis报错:无法连接Redis服务的解决方法

    在Linux系统上运行Redis服务时,有时会遇到“无法连接Redis服务”的报错,本文就详细的介绍一下解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09

最新评论