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

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

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

# Redisson入门

# Redisson可重入锁原理

获取锁的Lua脚本:

释放锁的Lua脚本:

# 锁重试原理分析

tryLock()底层代码分析

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

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

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

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

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

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

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

# 释放锁源码

# 总结

相关推荐
Hellyc2 小时前
用户查询优惠券之缓存击穿
java·redis·缓存
鼠鼠我捏,要死了捏4 小时前
缓存穿透与击穿多方案对比与实践指南
redis·缓存·实践指南
天河归来8 小时前
springboot框架redis开启管道批量写入数据
java·spring boot·redis
守城小轩8 小时前
Chromium 136 编译指南 - Android 篇:开发工具安装(三)
android·数据库·redis
Charlie__ZS9 小时前
若依框架去掉Redis
java·redis·mybatis
汤姆大聪明11 小时前
Redis 持久化机制
数据库·redis·缓存
钩子波比11 小时前
🚀 Asynq 学习文档
redis·消息队列·go
也许明天y12 小时前
Spring Cloud Gateway 自定义分布式限流
redis·后端·spring cloud
kk在加油13 小时前
Redis数据安全性分析
数据库·redis·缓存
都叫我大帅哥16 小时前
🔥 Redis缓存击穿:从“崩溃现场”到“高并发防弹衣”的终极指南
redis