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 包裹),避免锁泄漏。

相关推荐
伯明翰java7 小时前
Redis学习笔记-List列表(2)
redis·笔记·学习
a123560mh7 小时前
国产信创操作系统银河麒麟常见软件适配(MongoDB、 Redis、Nginx、Tomcat)
linux·redis·nginx·mongodb·tomcat·kylin
Elias不吃糖8 小时前
总结我的小项目里现在用到的Redis
c++·redis·学习
一个处女座的程序猿O(∩_∩)O8 小时前
Spring Boot、Redis、RabbitMQ 在项目中的核心作用详解
spring boot·redis·java-rabbitmq
⑩-9 小时前
缓存穿透,击穿,雪崩
java·redis
稚辉君.MCA_P8_Java10 小时前
DeepSeek 使用Kubernetes部署Redisson
大数据·人工智能·redis·后端·kubernetes
玄妙之门10 小时前
项目实战中redis和数据库结合提升缓存效率
数据库·redis·缓存
得物技术11 小时前
一文解析得物自建 Redis 最新技术演进
数据库·redis·云计算
梁正雄14 小时前
linux服务-redis 集群原理与部署-5
linux·运维·redis
跟着珅聪学java14 小时前
Redis 雪崩的成因及应对策略
redis