在Spring Boot 3中如何优雅配置Redis集群与连接池?

云浩大大_4146

云浩大大_4146

2026-10-24

567人浏览

原创

spring boot 3 集成 redis 集群需严格配置 spring.redis.cluster.nodes(纯 host:port、逗号分隔、无空格/协议/localhost)、spring.redis.cluster.max-redirects(建议设为 master 节点数)、spring.redis.password 及 spring.data.redis.lettuce.pool.* 参数,且禁用 keys 等跨槽命令。

在spring boot 3中如何优雅配置redis集群与连接池?

cluster.nodes 格式错一个空格就连不上

Spring Boot 3 的 RedisClusterConfiguration 解析器极其严格:节点列表必须是纯 host:port 格式,逗号分隔,**不能有空格、不能带 redis://、不能用 localhost(DNS 不稳时易失败)**。

常见错误示例:

  • 127.0.0.1:7001 , 127.0.0.1:7002 → 中间空格导致整个配置被忽略
  • redis://127.0.0.1:7001 → 协议前缀不识别,静默跳过该节点
  • localhost:7001 → 某些容器或云环境 DNS 解析失败,连接超时

正确写法(YAML):

spring:
  redis:
    cluster:
      nodes: 192.168.1.100:6379,192.168.1.101:6379,192.168.1.102:6379

⚠️ 所有节点必须是集群中可互相发现的 master 节点(非只读 slave),且集群状态为 ok(可通过 redis-cli --cluster check 验证)。

max-redirects 不设等于直接报 MOVED 异常

Lettuce 默认 max-redirects=0,意味着收到 MOVED 或 ASK 响应时直接抛 RedisCommandExecutionException,而不是尝试重定向。

这个值不是越大越好,而是要匹配集群实际拓扑深度:

  • 设为集群 master 节点数(如 6 个 master 就配 spring.redis.cluster.max-redirects=6)最稳妥
  • 设太小(如 1 或 2):跨槽操作频繁失败
  • 设太大(如 50):无意义重试,最终仍超时,浪费资源

注意:spring.redis.cluster.command-timeout 已在 Spring Boot 3.x 废弃,统一用 spring.redis.timeout 控制 socket 级超时(建议 ≥2000ms)。

redis-tools
redis-tools

按类别查找Redis命令、检测服务器连接、监控键数量和内存占用,支持离线速查表。

下载

lettuce.pool 参数前缀写错就等于没配

Spring Boot 对 Lettuce 连接池参数使用固定前缀:spring.data.redis.lettuce.pool.*。写成 spring.redis.pool.* 或 spring.redis.lettuce.pool.* 都会静默失效 —— 连接池退化为默认值(max-active=-1,即无限制),线上可能引发连接泄漏或 Redis 拒绝服务。

关键参数推荐值(中等负载):

  • spring.data.redis.lettuce.pool.max-active: 16(Lettuce 基于 Netty,连接复用率高,无需像 Jedis 那样配很大)
  • spring.data.redis.lettuce.pool.max-idle: 8
  • spring.data.redis.lettuce.pool.min-idle: 2
  • spring.data.redis.lettuce.pool.max-wait: 2000ms(超过则抛 CannotGetRedisConnectionException)

密码和超时走全局前缀:spring.redis.password 和 spring.redis.timeout,与单机/集群通用。

KEYS * 类命令在集群下必然失败,这不是配置问题

执行 stringRedisTemplate.keys("*") 或 scan 时,Lettuce 会抛 UnsupportedOperationException,这不是你漏配了什么,而是 Redis 集群协议层的硬性限制:这些命令无法跨 slot 执行。

生产中必须规避:

  • 禁用 KEYS(性能差且集群不支持)
  • 改用 scan 时,确保 key 有固定前缀并路由到同一 slot(例如用 {user}:123 格式)
  • 聚合类操作(如 sort、mget)要求所有 key 在同一 slot,否则失败

真正容易被忽略的是:自动装配的 StringRedisTemplate 默认用 JDK 序列化,存进去的数据带 \xAC\xED\x00\x05t\x00 前缀 —— 这跟集群无关,但会让缓存数据不可读、体积膨胀,需单独配 GenericJackson2JsonRedisSerializer 替换。

相关专题

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

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

2025.08.06

2651

22

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

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

2026.01.26

477

25

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

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

2023.11.02

4589

19

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

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

2023.11.14

4155

11

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

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

2024.04.02

7772

6

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

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

2024.04.07

643

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

7742

6

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

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

2024.04.07

1160

6

热门下载

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

精品课程

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

共0课时 | 0人学习