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

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

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

# Redisson入门

# Redisson可重入锁原理

获取锁的Lua脚本:

释放锁的Lua脚本:

# 锁重试原理分析

tryLock()底层代码分析

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

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

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

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

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

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

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

# 释放锁源码

# 总结

相关推荐
小毛驴8509 小时前
redis 如何持久化
数据库·redis·缓存
Kevinyu_16 小时前
Redisson
java·redis·缓存
代码老y17 小时前
Redis 生产实战 7×24:容量规划、性能调优、故障演练与成本治理 40 条军规
数据库·redis·缓存
sevevty-seven17 小时前
Redis 事务错误处理机制与开发应对策略
数据库·redis·log4j
武子康21 小时前
大数据-44 Redis 慢查询日志详解与性能优化实战指南
大数据·redis·后端
代码老y1 天前
从单线程到云原生:Redis 二十年演进全景与内在机理深剖
数据库·redis·云原生
hxdcxy1 天前
redis中间件
数据库·redis·中间件
青竹易寒2 天前
Redis技术笔记-从三大缓存问题到高可用集群落地实战
数据库·redis·笔记
生活百般滋味,人生需要笑对。 --佚名2 天前
springboot如何redis锁
java·spring boot·redis