Spring Boot整合Redis时报错RedisConnectionException怎么处理?

老宇小哥_9064

老宇小哥_9064

2026-07-20

206人浏览

原创

redisconnectionexception 主因是连接链路受阻,需逐层排查:①redis服务未启动或配置地址/端口不匹配;②protected-mode限制远程连接;③lettuce与redis协议版本不兼容(如resp3/resp2);④防火墙或云安全组屏蔽6379端口。

spring boot整合redis时报错redisconnectionexception怎么处理?

绝大多数情况下,RedisConnectionException 不是代码写错了,而是连接链路某处被拦住了——得一层层剥开看。

Redis 服务没跑起来或根本连不上

这是最常被忽略的第一步。哪怕你写了 redisTemplate.opsForValue().set("k","v"),如果 Redis 进程压根没启动,或者监听的地址/端口和配置对不上,就会直接抛 io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379。

  • 先用命令行验证:执行 redis-cli ping,返回 PONG 才算通;如果报 Could not connect to Redis at 127.0.0.1:6379: Connection refused,说明服务没起或端口不对
  • Linux 下检查进程:ps -ef | grep redis;Windows 下确认 redis-server.exe 是否双击运行(不是仅解压完就完事)
  • 确认 application.yml 里 spring.redis.host 和 spring.redis.port 和你实际启动 Redis 的地址一致——比如 Redis 改了端口为 6380,但配置还写 6379,必然失败

Redis 启用了保护模式(protected-mode)但没配密码或没放开绑定

Redis 3.2+ 默认开启 protected-mode yes,此时只允许本地回环(127.0.0.1)连接。一旦 Spring Boot 应用不在本机(比如 Docker 容器、远程服务器、阿里云 ECS),就会卡在 DENIED Redis is running in protected mode。

Redis Skill - 高性能缓存管理
Redis Skill - 高性能缓存管理

Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。

下载
  • 编辑 redis.conf,找到并修改两行:
    bind 127.0.0.1 → 注释掉(即加 #)
    protected-mode yes → 改成 protected-mode no
  • 如果不想关保护模式,就启用密码认证:在 redis.conf 中设 requirepass yourpassword,然后 Spring Boot 配置里必须加 spring.redis.password: yourpassword
  • 改完配置必须重启 Redis:redis-server /path/to/redis.conf,不是 reload

Lettuce 协议版本不匹配(尤其 Redis 5.x + Lettuce 6.x)

Spring Boot 3.x 默认带 Lettuce 6.x,它默认用 RESP3 协议;但 Redis 5.0 及更早版本只支持 RESP2。这时你会看到 NOAUTH Authentication required 或连接后立即断开,日志里还有 <unresolved></unresolved> 提示 DNS 解析失败——其实不是 DNS 问题,是协议握手失败导致连接未建立。

  • 临时验证:用 redis-cli -h xxx -p 6379 --raw INFO server 查 redis_version,再查对应版本支持的协议
  • 强制降级到 RESP2:在 @Configuration 类中手动构建 LettuceConnectionFactory,调用 clientOptions(ClientOptions.builder().protocolVersion(ProtocolVersion.RESP2).build())
  • 或者降级 Lettuce 版本(不推荐),Spring Boot 2.7.x 默认 Lettuce 5.x 就没这问题

防火墙、安全组或网络策略挡住了 6379 端口

本地开发很少遇到,但一上云服务器(阿里云、腾讯云、AWS)几乎必踩。即使 Redis 跑着、配置全对、协议也匹配,只要 6379 端口没放行,RedisConnectionException 就稳稳报给你。

  • Linux 服务器:运行 firewall-cmd --list-ports 看是否含 6379/tcp;没有就加:firewall-cmd --zone=public --add-port=6379/tcp --permanent && firewall-cmd --reload
  • 云厂商控制台:进「安全组」规则,确认入方向(Inbound)已添加 TCP 6379 端口,授权对象别写错(比如写成 0.0.0.0/0 才能从任意 IP 连)
  • 本地测试远程 Redis 时,还要确认自己电脑的 outbound 没被公司防火墙拦截——可以先用 telnet 或 nc 测试:nc -zv your-redis-ip 6379

真正麻烦的往往不是单点故障,而是多个条件叠加:比如 Redis 开了密码,但配置漏写了 password;同时 protected-mode 没关,又恰好云服务器安全组没开 6379 —— 日志只报最外层异常,得一个个排除。动手前,先问自己一句:你能用 redis-cli -h x.x.x.x -p 6379 -a yourpass ping 直连成功吗?不能,就别急着改 Java 代码。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2025.08.06

2411

22

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

2026.01.26

457

25

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4349

19

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.14

3855

11

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

7052

6

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

623

6

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

756

6

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

6742

6

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

1160

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习