Redisson 配置速查:最小可用配置、连接池调优与踩坑处理
Redisson 配置速查最小可用配置、连接池调优与踩坑处理【免费下载链接】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连接池参数设错线上 Redisson 客户端就会频繁重建连接、锁看门狗行为异常。本文按单机 → 集群 → 哨兵 → Spring Boot四类场景给出最小可用配置和参数取值依据读完能直接套用并知道压测后该动哪几个数字。先搞清楚这套配置到底在配什么Redisson 所有模式单机、主从、哨兵、集群共用一个Config对象配置分两层全局层线程、编解码、看门狗和模式层地址、连接池、扫描间隔。全局层定义在redisson/src/main/java/org/redisson/config/Config.java各模式的连接池参数散落在同目录的SingleServerConfig、ClusterServersConfig等类里官方完整字段说明见docs/configuration.md。参数源码默认值作用connectionPoolSize64每条连接池的最大连接数决定单机吞吐上限connectionMinimumIdleSize24最小空闲连接突发流量下免冷启动connectTimeout10000msTCP 建连超时不是命令超时timeout3000ms命令发出后的应答超时超时未返回即失败retryAttempts4命令发送失败后的重试次数idleConnectionTimeout10000ms空闲连接回收阈值连接数高于最小空闲值时才回收threads/nettyThreads16 / 32业务回调线程数 / Netty IO 线程数codecKryo5Codec数据序列化方案影响体积、速度和跨语言兼容性lockWatchdogTimeout30000ms分布式锁看门狗续期周期集群scanInterval5000ms集群拓扑扫描间隔节点扩缩容后多久生效⚠️ 注意retryInterval已在源码中标记为废弃重试间隔改用retryDelay的延迟策略如EqualJitterDelay控制旧配置里写这个字段只会收到警告日志。按部署场景对号入座单机YAML 五分钟内跑通singleServerConfig: address: redis://127.0.0.1:6379 database: 0 connectionPoolSize: 32 connectionMinimumIdleSize: 16 connectTimeout: 5000 timeout: 1000 retryAttempts: 3 password: yourpassword threads: 8 nettyThreads: 16加载方式Config.fromYAML(new File(redisson.yaml))后交给Redisson.create(config)。为什么这么设connectionPoolSize从默认的 64 降到 32是因为单机开发/中小规模下 64 条长连接会推高 Redis 端maxclients压力32 已覆盖多数接口 QPStimeout收到 1000ms命令超时设太大会让慢查询把线程挂死快速失败交给上层重试更可控address支持${VAR}变量语法环境变量优先于系统属性同一份 YAML 可复用到多环境。集群程序化配置 读策略Config config new Config(); config.useClusterServers() .addNodeAddress(redis://10.0.0.1:7000, redis://10.0.0.2:7000, redis://10.0.0.3:7000) .setPassword(yourpassword) .setMasterConnectionPoolSize(32) .setSlaveConnectionPoolSize(32) .setReadMode(ReadMode.SLAVE) .setSubscriptionMode(SubscriptionMode.SLAVE) .setScanInterval(5000); RedissonClient client Redisson.create(config);为什么这么设集群只要求给出部分节点地址其余拓扑靠CLUSTER SLOTS自动发现nodeAddresses里放 3 个不同 master 即可✅ReadMode.SLAVE把读流量分摊到从节点主节点只扛写纯读场景收益最大但要求从节点复制延迟可接受SubscriptionMode控制 pub/sub 订到哪个角色订阅量大的业务选 SLAVE 可避免打满主节点连接数。哨兵把主节点名字交给哨兵sentinelServersConfig: sentinelAddresses: - redis://10.0.0.1:26379 - redis://10.0.0.2:26379 masterName: mymaster slaveConnectionPoolSize: 32 masterConnectionPoolSize: 32 password: yourpassword为什么这么设代码里不写任何数据节点地址主/从全部由masterName向哨兵查询得到主切换后下一次查询自动跟随新主sentinelAddresses至少配 2 个避免单个哨兵故障时客户端失去寻址能力哨兵模式下scanInterval默认 1000ms比集群的 5000ms 更激进因为主切换需要更快感知。Spring Boot一个属性指向 YAMLStarter 的RedissonAutoConfiguration读取前缀为spring.redis.redisson的属性见redisson-spring/redisson-spring-boot-starter/src/main/java/org/redisson/spring/starter/RedissonAutoConfiguration.java源码侧对应RedissonProperties只有file与config两个字段# 二选一文件路径 或 直接内联 YAML 文本 spring.redis.redisson.fileclasspath:redisson.yaml若不想维护 YAML也可以直接注册 BeanConfiguration public class RedissonConfig { Bean(destroyMethod shutdown) public RedissonClient redissonClient() { Config cfg new Config(); cfg.useSingleServer().setAddress(redis://10.0.0.1:6379); return Redisson.create(cfg); } }注意 Bean 上保留destroyMethod shutdown否则容器关闭时连接池不会释放日志里会留一堆未关闭的 Netty channel。让性能跟上来三个维度线程、序列化、连接合并成一张表按适用条件取用参数建议值适用条件threads2 × CPU 核数默认 16回调里有较重业务逻辑反序列化、加锁判断时上调nettyThreads4 × CPU 核数默认 32高连接数 高消息频率IO 成为瓶颈时上调codec纯 Java 生态用 Kryo5默认跨语言/需人工读数据换JsonJacksonCodecJSON 体积约为二进制 2~3 倍带宽紧张时别用connectionPoolSize按QPS × 平均命令耗时(ms) / 1000估算向上取整留 20%压测时观察连接等待队列池子打满再加大不要拍脑袋给 200connectionMinimumIdleSize约为池子的 50%突发流量场景避免峰值瞬间集中建连idleConnectionTimeout默认 10000msNAT/防火墙环境调大到 30000ms 以上小于中间设备断连空闲阈值时连接会被半路切断lockWatchdogTimeout默认 30000ms续期周期约为其 1/3业务持锁时间远超默认值时单独调整别全局放宽 一个容易忽略的点threads和nettyThreads是每客户端实例的量。同一进程里创建多个RedissonClient时线程总量要合并核算否则实际线程数是配值的 N 倍。踩坑速查症状常见原因动作启动即RedisConnectionException提示连接超时connectTimeout与网络实际 RTT 不匹配地址写错协议rediss://连到非 TLS 端口先telnet验证端口连通性核对 scheme 前缀跨网段把connectTimeout提到 5000 以上读写报序列化/反序列化异常或旧数据读不出换了 codecKryo5 ↔ JSON历史数据的字节结构不兼容codec 一旦上线不可随意更换新旧客户端同版本发布必要时双读过渡集群扩缩容后请求持续路由到旧节点scanInterval未到扫描周期拓扑未刷新短期手动重建客户端长期把scanInterval调小但别低于 2000ms避免CLUSTER SLOTS风暴分布式锁莫名释放业务并发冲突看门狗续期任务被 GC 长停顿或threads池饥饿拖垮检查threads是否被业务逻辑占满确认锁对象在同一 JVM 生命周期内未重复 unlock空闲一段时间后首条命令报连接断开idleConnectionTimeout小于防火墙/NAT 的空闲断连时间池里留了尸体连接把idleConnectionTimeout调小到低于中间设备空闲阈值让客户端主动回收收尾清单开发/测试环境用 YAML${VAR}变量化端口和密码生产环境保持文件配置并纳入配置中心程序化配置只用于需要按机器规格动态算线程数的场景上线前固定一次 codec 选型并写进代码评审 checklist序列化方案变更等同于数据迁移连接池参数以压测数据为准等待队列空着就把池子调小打满就按估算公式加大禁止直接给最大值每 3 个月核对一次Config.java默认值变更如重试策略、DNS 监控参数避免没配和默认改了之间的行为漂移客户端实例数 × 每实例线程数 进程总线程预算多客户端场景先算账再配置。【免费下载链接】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),仅供参考

相关新闻

10分钟装好Ultimate Vocal Remover:AI人声伴奏分离完整部署指南

10分钟装好Ultimate Vocal Remover:AI人声伴奏分离完整部署指南

10分钟装好Ultimate Vocal Remover:AI人声伴奏分离完整部署指南 【免费下载链接】ultimatevocalremovergui GUI for a Vocal Remover that uses Deep Neural Networks. 项目地址: https://gitcode.com/GitHub_Trending/ul/ultimatevocalremovergui Ultimate…

2026/11/16 5:28:50 阅读更多 →
Windows 下部署 pgvector 完整指南:预编译 DLL 与源码编译两种路径

Windows 下部署 pgvector 完整指南:预编译 DLL 与源码编译两种路径

Windows 下部署 pgvector 完整指南:预编译 DLL 与源码编译两种路径 【免费下载链接】pgvector Open-source vector similarity search for Postgres 项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector 本文面向在 Windows 上运行 PostgreSQL 的开发…

2026/11/10 10:05:47 阅读更多 →
DeerFlow 的 grep 与 glob 工具:为 Coding Agent 构建受控的文件系统检索层

DeerFlow 的 grep 与 glob 工具:为 Coding Agent 构建受控的文件系统检索层

DeerFlow 的 grep 与 glob 工具:为 Coding Agent 构建受控的文件系统检索层 【免费下载链接】deer-flow An open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents an…

2026/11/2 6:23:30 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/15 5:13:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/15 5:13:35 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/15 5:13:35 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/15 3:37:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/15 4:18:38 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/15 5:13:35 阅读更多 →

日新闻

周新闻

月新闻