
Redisson配置速查表从YAML到Spring Boot5分钟抄完【免费下载链接】redissonRedisson: Valkey Redis Java Client and Real-Time Data Platform. Sync/Async/RxJava/Reactive API. Over 50 Valkey and Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache..项目地址: https://gitcode.com/GitHub_Trending/re/redissonRedisson 是 Redis 的 Java 客户端支持同步/异步/响应式多套 API而它的 Redisson配置 直接决定了连接稳不稳、性能高不高。这篇文章把 YAML 配置、程序化配置、Spring Boot 集成和连接池调优整理成可复制的模板你照着抄改三个地址就能跑起来。一、先说几个真实的翻车现场集群节点填了redis://127.0.0.1:7000之后连接一直建不上——后来发现前缀写错集群模式下 Redisson 期望的是不带协议头的地址列表。connectionPoolSize拍脑袋写了 200结果线上 Redis 侧 connection 数爆炸反过来把服务端拖慢。哨兵模式部署好了客户端却一直报找不到主节点——masterName拼写和哨兵里注册的对不上。本地开发一切正常上到容器里就超时报timeout——因为默认timeout只有 3000ms跨机房网络延迟早就超了。这些坑90% 是配置项没填对而不是 Redisson 本身的问题。下面先把选型定下来。二、部署模式怎么选一张表定生死先看你手上有多少节点、要不要自动切换再看对应填哪个配置块。部署模式典型场景配置块 / 入口节点数主挂了怎么办单机开发、测试、内部小工具singleServerConfig/useSingleServer()1直接挂需外部保障主从已有固定主从拓扑自己维护拓扑masterSlaveServersConfig/useMasterSlaveServers()1主N从手动改配置切主哨兵生产环境主流自动故障转移sentinelServersConfig/useSentinelServers()1主N从哨兵组哨兵自动发现新主集群数据量大、需要水平扩容clusterServersConfig/useClusterServers()多主多从16384 slot集群内部自动 failover判断口诀开发用单机生产默认哨兵数据量撑不住了上集群。所有模式共用的超时、重试、连接池参数都在同一个Config对象上代码入口见 Config.java。三、「抄了就能用」的 YAML 配置模板Redisson 推荐用 YAML 声明式配置文件本身可以进版本库各环境只改地址。加载方式统一是Config.fromYAML(...)支持File、InputStream、String等入参。3.1 单机模式最简模板singleServerConfig: address: redis://127.0.0.1:6379 password: yourpassword connectionPoolSize: 64 connectionMinimumIdleSize: 24 idleConnectionTimeout: 10000 connectTimeout: 10000 timeout: 3000 retryAttempts: 3 retryInterval: 1500address决定协议redis://明文rediss://走 SSL。timeout是命令执行超时跨机房部署记得调大别用默认 3000。retryAttemptsretryInterval控制失败后的重试节奏网络抖动的环境可以适当加。3.2 哨兵模式让值班室帮你盯着主节点把哨兵组理解成值班室主节点一旦掉线哨兵会立刻广播新的主是谁客户端跟着哨兵走就行你不用自己发现拓扑变化。sentinelServersConfig: sentinelAddresses: - redis://127.0.0.1:26379 - redis://127.0.0.1:26380 masterName: mymaster password: yourpassword connectionPoolSize: 64 connectionMinimumIdleSize: 24 slaveConnectionPoolSize: 64 masterConnectionPoolSize: 64两个易错点masterName必须和哨兵注册的主组名逐字符一致差一个字母都连不上。sentinelAddresses填哨兵地址而不是 Redis 地址很多超时就是这么来的。3.3 集群模式Redisson集群配置模板集群模式下 Redisson 会自己扫描 slot 分配你只需给一个可达的节点地址其余节点它会通过CLUSTER SLOTS发现。clusterServersConfig: nodeAddresses: - redis://127.0.0.1:7000 - redis://127.0.0.1:7001 - redis://127.0.0.1:7002 password: yourpassword scanInterval: 2000 connectionPoolSize: 64 connectionMinimumIdleSize: 24 slaveConnectionPoolSize: 64 masterConnectionPoolSize: 64 readMode: SLAVE subscriptionMode: MASTERscanInterval是拓扑刷新周期节点扩缩容后多久能被感知取决于它。readMode: SLAVE让读流量分摊到从节点减轻主节点压力写永远走主。subscriptionMode决定 Pub/Sub 订阅挂在主还是从默认跟主避免主从切换时丢订阅。3.4 主从模式补充如果你不用哨兵、自己维护主从列表masterSlaveServersConfig: masterAddress: redis://127.0.0.1:6379 slaveAddresses: - redis://127.0.0.1:6380 - redis://127.0.0.1:6381 password: yourpassword slaveConnectionPoolSize: 64 masterConnectionPoolSize: 64拓扑变化需要改配置重启所以生产环境更推荐 3.2 的哨兵方案。3.5 程序化配置需要动态参数时再用如果地址、池大小要按运行时环境算直接在代码里构建Config对象。四种模式的入口方法一一对应useSingleServer()、useMasterSlaveServers()、useSentinelServers()、useClusterServers()。Config config new Config(); config.useSingleServer() .setAddress(redis://127.0.0.1:6379) .setPassword(yourpassword) .setConnectionPoolSize(64) .setConnectionMinimumIdleSize(24) .setTimeout(3000); RedissonClient redisson Redisson.create(config);顺手提一个 YAML 的好用特性地址里可以写${REDIS_PORT}这样的变量启动时从环境变量或 JVM 系统属性里替换还能带默认值如${REDIS_PORT:-6379}容器化部署时很顺手。四、Redisson Spring Boot 集成starter 一步挂载4.1 引入依赖pom.xml 里加 starter版本号与你项目里的 Redisson 版本保持一致即可dependency groupIdorg.redisson/groupId artifactIdredisson-spring-boot-starter/artifactId /dependency4.2 把 YAML 文件挂上去不需要写任何 Beanapplication.properties指一路径starter 的自动配置类会自动读文件并创建客户端源码见 RedissonAutoConfiguration.javaspring.redis.redisson.configclasspath:redisson-config.yaml把第三节的 YAML 存成redisson-config.yaml放进resources启动即生效。4.3 想要完全自定义不想走文件时自己声明一个RedissonClientBean容器就不会再自动创建Configuration public class RedissonConfig { Bean public RedissonClient redissonClient() { Config config Config.fromYAML( new FileInputStream(config/redisson-config.yaml)); return Redisson.create(config); } }一条原则文件能解决的别写代码——YAML 进版本库配置变更可审查、可回滚。五、性能调优速查表参数不用逐个背出问题查这张表就够了。参数层级作用一句话参考值与说明threads全局业务回调线程数命令返回后跑 Java 回调CPU 核数的 2 倍左右nettyThreads全局Netty IO 线程数负责收发字节CPU 核数的 2~4 倍IO 密集场景拉满connectionPoolSize各模式写操作连接池上限相当于收银台数量单机默认 64按 QPS 压测后定别拍脑袋翻倍connectionMinimumIdleSize各模式池里保活的最小空闲连接防止冷启动时集中建连默认 24突发流量大就调高masterConnectionPoolSize/slaveConnectionPoolSize哨兵/集群分别控制打主节点、打从节点的连接池按读多写少比例分配写多则加大 master 侧idleConnectionTimeout全局空闲连接多久被回收ms默认 10000连接被 LB 掐掉时可配合 keepalive 调connectTimeout全局建 TCP 连接的超时ms默认 10000跨网络平面调大timeout全局单条命令等待响应的超时ms默认 3000跨机房建议 5000retryAttempts/retryInterval全局失败重试次数 / 重试间隔默认 4 次 / 1500ms弱网环境放宽scanInterval哨兵/集群拓扑扫描周期ms默认 2000希望扩缩容更快感知就调小codec全局序列化方式影响包大小和兼容性默认JsonJacksonCodec追求性能换Kryo5Codec注意跨语言可读性codec 在 YAML 里用类型标签写法codec: !org.redisson.codec.JsonJacksonCodec {}选 codec 的权衡JSON 系人可读、可跨语言但包大Kryo 系快且小但别的语言读不了。只存 Java 对象、追求吞吐选 Kryo要被运维redis-cli抽查选 JSON。六、排坑清单症状 → 原因 → 解法症状常见原因解法启动报连接超时 /connect timeout地址或前缀写错rediss://vsredis://网络不通先用 redis-cli 验证同一地址确认 TLS 需求再选协议头运行期偶发RedisTimeoutExceptiontimeout默认 3000ms 偏小或连接池被占满调大timeout检查connectionPoolSize是否小于峰值并发集群启动失败、找不到节点nodeAddresses填了不通的节点slot 未覆盖全部 16384确认地址可达且集群完整scanInterval调小加速感知哨兵模式连不上主masterName与哨兵注册名不一致SENTINEL master mymaster核对名字逐字符一致反序列化报错 / 存进去读出来类型不对不同客户端用了不同 codec对象不可序列化全链路统一 codec存 JSON 结构时对象保持可序列化从节点读到旧数据readMode: SLAVE 主从复制延迟强一致读切MASTER或读后关键数据再走主容器里地址硬编码换环境就全挂地址写死在代码/YAMLYAML 用${REDIS_HOST}变量 环境变量注入以上参数和默认值的权威说明可以翻仓库自带的配置文档 docs/configuration.md每个字段的取值范围都写得很细。下一步挑你当前环境对应的 YAML 模板存成redisson-config.yaml先用Config.fromYAML()在 main 方法里跑通一次再挂到 Spring Boot 的spring.redis.redisson.config上。跑通后把connectionPoolSize和timeout按你的真实 QPS 压一遍比背参数有用得多。【免费下载链接】redissonRedisson: Valkey Redis Java Client and Real-Time Data Platform. Sync/Async/RxJava/Reactive API. Over 50 Valkey and Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache..项目地址: https://gitcode.com/GitHub_Trending/re/redisson创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考