Redisson看门狗机制

redis分布式锁我们需要手动为锁设置超时过期时间,但是这个时间不好判断,如果太短,持有锁的客户端还在执行业务,锁就超时释放了;如果太长了,持有锁的客户端释放锁失败,则其他客户端一直没法获取锁。所以我们用Redission看门狗机制为锁超时时间自动续约,就可以解决这个问题。

**redisson中的Watch Dog 机制就是用来给锁续约的。**保证锁是业务执行完释放的,而不是因为超时释放的。

  • leaseTime,即超时释放时间。如果用户没设置,那么默认就会开启看门狗机制。默认设置的超时释放时间为看门狗时间30s。

  • waitTime,在waitTime时间范围内,如果获取锁失败,会等到这个锁的有效期到了不断重试。如果waitTime时间到了,那么就不会重试,直接返回false。

以下是获取锁成功后如何续约的源码:

进入尝试获取锁方法内

进入scheduleExpirationRenewal方法中

进入renewExpiration方法中

这个延时任务执行的内容如下:

unlock方法里的cancel方法:

综上,一个线程首次获得锁后,就会开启每隔10s(leaseTime=30s)的续约任务。直到这个线程unlock时,这个续约任务才会停止。

相关推荐
zzqssliu10 小时前
SpringBoot框架搭建跨境独立站|Taocarts代购系统订单模块深度开发
java·spring boot·后端
dinl_vin10 小时前
FastAPI 系列 ·(四):数据库集成——SQLAlchemy 2.0 异步 ORM 与 Alembic 迁移
java·数据库·fastapi
编码者卢布10 小时前
【Azure Service Bus】Azure Service Bus Java SDK 中 Token 刷新异常的排查思路
java·python·azure
兰令水10 小时前
topcode【随机算法题】【2026.5.20打卡-java版本】
java·开发语言·算法
AI瓦力11 小时前
技术分享 | 彻底解决图片“躺平”问题:Java 后端强制校准图片方向
java
武子康11 小时前
Java-219 RocketMQ Spring Boot 集成指南:生产者与消费者实战
java·spring boot·分布式·kafka·消息队列·rocketmq·java-rocketmq
RainCityLucky11 小时前
Java Swing 自定义组件库分享(七)
java·笔记·后端
小白|11 小时前
cmake:昇腾CANN构建系统完全指南
java·c++·算法
weixin_5129761711 小时前
Java 面试宝典 Beta5.0
java
Ting-yu11 小时前
Spring AI Alibaba零基础速成(5) ---- Memory(记忆)
java·人工智能·后端·spring