使用Docker安装的redis,springboot连接redis,经常过一段时间就从redis取值失败,报这个错误Redis exception; nested exception is io.lettuce.core.RedisException: java.io.IOException: 远程主机强迫关闭了一个现有的连接。

1. 报错原因

spring中配置的超时时间应该大于tcp的存活时间,否则tcp连接还存活着,spring以为已经超时,又去创建,就会强制之前的连接关闭。

2.解决方案

修改redis.conf文件中的tcp-keepalive数值。就是一次连接tcp的存活时间

但是通过reids安装的有时候配置文件可能会不生效,所以使用docker重装redis,确保配置文件可以生效

修改springboot 连接redis的超时时间,需要这个时间大于tcp-keepalive的时间

3.重装Redis确保配置文件生效

拉取最新镜像

docker pull redis

创建文件夹

cd /home
mkdir redis/conf
mkdir redis/data

写入redis配置文件。redis.conf

cd /home/redis/conf
vim redis.conf

配置文件内容

##节点端口
port 6379
##允许任何来源
#bind 0.0.0.0
bind 47.99.149.92 120.244.10.31
## 是为了禁止公网访问redis cache,加强redis安全的。它启用的条件,有两个:1) 没有bind IP 2) 没有设置访问密码 启用后只能够通过lookback ip(127.0.0.1)访问Redis cache,如果从外网访问,则会返回相应的错误信息
protected-mode no
##开启持久化模式
appendonly yes
appendfilename appendonly.aof
#开启混合持久化
aof-use-rdb-preamble yes
# 文件达到1m时进行重写,然后如果文件大小增长了一倍,也会触发重写。
auto-aof-rewrite-min-size 1mb
auto-aof-rewrite-percentage 100
##AOF 文件和 Redis 命令是同步频率的,假设配置为 always,其含义为当 Redis 执行命令的时候,则同时同步到 AOF 文件,这样会使得 Redis 同步刷新 AOF 文件,造成缓慢。而采用 evarysec 则代表
## 每秒同步一次命令到 AOF 文件。
appendfsync everysec
#pidfile redis.pid
#进程pid文件,加port以示区分
pidfile /data/redis/data/redis_6379.pid
# 后台运行 ---- docker中使用后台运行将无法启动容器(应该是容器无法检测后台运行进程)
# daemonize yes
databases 20
tcp-keepalive 20
#redis初始密码
requirepass 1234

启动容器


docker run -d -p 6379:6379 --name my_redis  --privileged=true -v /home/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data redis:latest redis-server /etc/redis/redis.conf

通过这种方式可以指定redis的配置文件,确保配置文件中的tcp-keepalive生效

4. 配置springboot连接redis

##redis配置
spring.redis.database=0
### 服务器地址,默认为localhost
spring.redis.host=172.1.1.1
### 链接端口,默认为6379
spring.redis.port=6379
### redis密码默认为空
spring.redis.password=123456
#处理连接超时等 如 java.io.IOException: 远程主机强迫关闭了一个现有的连接。
#Spring Boot 从 2.0版本开始,将默认的Redis客户端Jedis替换为Lettuce
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=-1ms
spring.redis.lettuce.pool.max-idle=5
spring.redis.lettuce.pool.min-idle=0
spring.redis.timeout=30000ms
# 关闭超时时间
spring.redis.lettuce.shutdown-timeout=100

Docker Redis远程主机强迫关闭了一个现有的连接相关推荐

  1. redis 远程主机强迫关闭了一个现有的连接_如何在 Debian 10 上安装和配置 Redis 服务...

    Redis是一个开放源代码的内存中键值数据存储.它可以用作数据库,缓存和消息代理,并支持各种数据结构,例如字符串,哈希,列表,集合等.Redis通过Redis Sentinel提供高可用性,并通过Re ...

  2. redis 远程主机强迫关闭了一个现有的连接_记一次Redis+Getshell经验分享

    你是我患得患失的梦,我是你可有可无的人,毕竟这穿越山河的箭,刺的都是用情之疾的人. 前言: 当我们接到一个授权渗透测试的时候,常规漏洞如注入.文件上传等尝试无果后,扫描端口可能会发现意外收获. 知己知 ...

  3. 关于Redis出现“java.io.IOException: 远程主机强迫关闭了一个现有的连接”的一次排查

    背景 最近在使用springboot(Windows下)连接redis(云服务器)开发时发现一些问题:连接成功的情况下,在一段时间未交互数据后,再次通过连接与Redis传输数据回出现异常java.io ...

  4. SpringBoot整合Redis:java.io.IOException: 远程主机强迫关闭了一个现有的连接。或者控制台报连接超时异常

    场景: 项目启动过后 Redis 连接过一会就会断开,报如下问题: 问题1: 2022-12-05 23:05:18.287 ERROR 10752 --- [sson-netty-1-11] o.r ...

  5. java.io.IOException: 远程主机强迫关闭了一个现有的连接。

    参考文档: (2条消息) 解决redis中java.io.IOException: 远程主机强迫关闭了一个现有的连接_zeal9s的博客-CSDN博客_redis远程主机强迫关闭了一个现有连接怎么解决 ...

  6. mysql远程主机强迫关闭了一个现有连接_asp.net连接mysql出现了远程主机强迫关闭了一个现有的连接。!!!...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [SocketException (0x2746): 远程主机强迫关闭了一个现有的连接.] System.Net.Sockets.Socket.Recei ...

  7. python 网络编程 socket 报错 ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

    服务端: # -*- coding: utf-8 -*- """ @File : 191226_基于UDP协议的socket_server端.py @Time : 201 ...

  8. Adb connection Error:远程主机强迫关闭了一个现有的连接

    [2013-07-19 09:32:07 - DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接. [2013-07-19 09:32:08 -  ...

  9. python post 远程主机强迫关闭了一个现有的连接_ConnectionResetError:[WinError10054远程主机强迫关闭一个现有连接...

    最近在使用Airtest这套框架尝试web自动化界面测试的时候,在脚本之前都可正常运行的情况下,偶有的时候遇到连接错误,报错:Connection abourted. ConnectionResetE ...

  10. C#中UDP通信过程中出现:远程主机强迫关闭了一个现有的连接0x80004005】的解决方法

    在UDP通信过程中, 使用try...catch语句接受数据时,总是会出现一个错误: System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭 ...

最新文章

  1. 李宏毅机器学习笔记(五)-----Where does the error come from
  2. 哺乳动物亚种在物种进化中至关重要
  3. removelogo使用方法_怎么给视频去水印?这三种方法简单又高效
  4. 神策数据易向文:打造券商上层数据应用的坚实基础
  5. Project2010的新特性
  6. 这一两天要做的事--关于Altera FPGA首先要搞清楚的几个问题 以及解答
  7. Microsoft SQL Server 2005 提供了一些工具来监控数据库
  8. 【C#】详解C#异常
  9. 用VB实现带图片的XP风格的按钮控件
  10. 风一样的坑爹哥rust1_醒醒吧,烂大街的“北欧风”根本不实用!
  11. 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_5.RabbitMQ研究-入门程序-生产者...
  12. Android 滑动界面实现---Scroller类别 从源代码和开发文档了解(让你的移动布局)...
  13. UE4特效系列笔记①
  14. appcode破解方法
  15. Visual Stdio 无法找到资源编译器DLL
  16. 计算机保研保姆书(北航,浙软,南软,哈工大,上科大,天大,中南,华南理工,华东师范)【此后无良辰】
  17. 解决Hexo无法显示图片的几种方案
  18. python 嵌入式webserver 服务器 状态监控
  19. 合天网安实验室CTF-Web100-Give Me Flag
  20. jquery实现截取pc图片_Cropper.js 实现裁剪图片并上传(PC端)

热门文章

  1. Spring Boot学习笔记(二十一)Spring boot 数据校验 @Validated、@Valid用法详解
  2. KALI搭建个人wifi热点
  3. 【Unity3D 灵巧小知识点】 ☀️ | 层级面板中的 ‘小手指‘ 作用: 在Scen中将该物体设置为不可选中状态
  4. NCA9555/PCA9555代码 通用总线IO扩展器芯片驱动
  5. 文明与征服李世民最强阵容推荐
  6. 金融知识入门之基金基础概念
  7. HTB_Secret
  8. Photoshop抠图(运用背景橡皮擦工具进行抠图)
  9. Stealing Harry Potter‘s Precious BFS+DFS
  10. C-Cheating and Stealing_2021牛客暑期多校训练营5