Redisson看门狗机制详解

核心定义:Redisson 看门狗(Watch Dog)是分布式锁的自动续期机制,用于解决锁过期后业务未执行完的问题,避免锁提前释放导致并发安全风险。

  1. 核心原理
  • 当获取分布式锁时(如 RLock.lock() 无参调用),默认锁过期时间为 30秒。

  • 若业务未执行完,看门狗会在锁过期前 1/3时间(约10秒)自动向 Redis 发送续期请求,将锁过期时间重置为30秒。

  • 业务执行完毕后,调用 unlock() 会释放锁并停止续期;若进程意外终止,看门狗停止工作,锁会在30秒后自动过期,避免死锁。

  1. 关键特性
  • 自动触发:无参 lock() 默认启用,无需手动配置续期逻辑。

  • 灵活配置:

  • 可通过 lock(leaseTime, TimeUnit) 指定锁过期时间,此时看门狗不生效(需手动续期)。

  • 可通过 Config.setLockWatchdogTimeout(毫秒) 全局修改默认30秒过期时间。

  • 高性能:基于 Redis 发布订阅机制实现,续期操作轻量,不占用过多资源。

  1. 适用场景
  • 业务执行时间不确定(如复杂计算、远程调用),无法提前预估锁过期时间。

  • 避免手动续期的繁琐逻辑,简化分布式锁使用流程。

  1. 底层实现流程

  2. 客户端获取锁成功后,启动后台定时任务(看门狗线程)。

  3. 定时任务每隔 lockWatchdogTimeout / 3 秒执行一次。

  4. 续期时通过 Lua 脚本原子性更新锁的过期时间(避免并发续期冲突)。

  5. 锁释放或进程终止时,定时任务自动停止。

  6. 注意事项

  • 若手动指定 leaseTime ,看门狗机制失效,需确保 leaseTime 大于业务最大执行时间。

  • 依赖 Redis 正常运行,若 Redis 集群故障,续期失败可能导致锁提前过期。

  • 需正确调用 unlock() 释放锁(建议用 try-finally 包裹),避免锁泄漏。

相关推荐
无小道43 分钟前
Redis——哈希类型相关指令
redis·算法·哈希算法
Omics Pro2 小时前
前沿学科:量子生物学!
大数据·数据库·人工智能·windows·redis·量子计算
无小道2 小时前
Redis——list相关指令
数据库·redis·缓存
Trouvaille ~3 小时前
【Redis篇】为什么需要 Redis:从单机到分布式的架构演进之路
数据库·redis·分布式·缓存·中间件·架构·后端开发
June`3 小时前
多线程redis项目之aof
数据库·redis·缓存
Peter-OK3 小时前
Redis从3.x到8.4的核心新特性深度解析与实战学习指南
数据库·redis·缓存
半夜修仙3 小时前
Redis中Set数据类型的常见命令
java·数据库·redis·笔记·学习
Roselind_Yi4 小时前
【快速熟悉容器】企业 Docker 从 0 到落地全流程(分角色版)
java·运维·redis·docker·容器·json·改行学it
星轨zb4 小时前
Spring Data Redis 实战避坑:搞定序列化乱码与 Hash 结构存储
java·redis·spring·lock
phltxy4 小时前
Redis 常见面试题
数据库·redis·缓存