Redisson分布式锁 原理&源码 分析

# 基于setnx实现的分布式锁存在的问题:

# 为了解决上面的问题,可以用Redisson

# Redisson入门

# Redisson可重入锁原理

获取锁的Lua脚本:

释放锁的Lua脚本:

# 锁重试原理分析

tryLock()底层代码分析

time :剩余的等待重试时间 ttl:现被持有的锁的剩余有效时间

计算尝试获取锁所消耗的时间,然后再计算出等待获取锁的剩余时间time,

如果time<=0,则不再重试了直接返回获取锁失败,

如果time>0,则通过subscribe去订阅别人释放锁的通知信号,如果在剩余的等待重试时间time里还没有等到通知信号,则取消订阅;

如果在剩余的等待重试时间里订阅到释放锁的信号了,就再重新计算一次剩余的等待重试时间time,如果time>0,则进入while(true)循环中尝试获得锁。

释放锁的lua脚本中的发布消息通知

# 看门狗更新锁有效时间 源码分析

# 释放锁源码

# 总结

相关推荐
ErizJ5 小时前
Redis|腾讯面经总结
数据库·redis
庞轩px5 小时前
第三篇:缓存穿透、击穿、雪崩——从原理到解决方案
redis·缓存·缓存穿透·缓存击穿·缓存雪崩·布隆过滤器·互斥锁/逻辑过期
gQ85v10Db6 小时前
Redis分布式锁进阶第二十二篇
数据库·redis·分布式
@小匠7 小时前
Redis RDB持久化之 save 自动备份检查机制
数据库·redis·bootstrap
庞轩px11 小时前
第四篇:RDB与AOF持久化——宕机后数据怎么恢复?
redis·缓存·持久化·aof·rdb·宕机·恢复数据
PeterLi12 小时前
Redis 分布式锁架构全解析:从基础实现到生产级选型指南
redis·分布式
下次再写12 小时前
【Redis实战】深入理解Redis缓存策略:从原理到Spring Boot实践
java·spring boot·redis·缓存穿透·缓存击穿·分布式缓存·缓存策略
小白君65313 小时前
互联网大厂Java面试:从Spring Boot到微服务的技术场景深度解析
spring boot·redis·微服务·消息队列·java面试·数据库优化
庞轩px13 小时前
第七篇:Redis分布式锁——从setnx到RedLock的演进之路
数据库·redis·分布式锁·redission·setnx·redlock·可重入锁
橙子圆12314 小时前
Redis知识2
java·数据库·redis