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

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

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

# Redisson入门

# Redisson可重入锁原理

获取锁的Lua脚本:

释放锁的Lua脚本:

# 锁重试原理分析

tryLock()底层代码分析

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

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

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

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

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

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

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

# 释放锁源码

# 总结

相关推荐
问道飞鱼18 分钟前
【Springboot知识】Springboot结合redis实现分布式锁
spring boot·redis·分布式
小金的学习笔记36 分钟前
RedisTemplate和Redisson的使用和区别
数据库·redis·缓存
取址执行38 分钟前
Redis发布订阅
java·redis·bootstrap
呼啦啦啦啦啦啦啦啦1 小时前
【Redis】事务
数据库·redis·缓存
赵相机-2 小时前
Spring集成Redis|通用Redis工具类
spring boot·redis·spring
书生-w2 小时前
Redis Windows 解压版安装
数据库·windows·redis
猿小飞2 小时前
redis 5.0版本和Redis 7.0.15的区别在哪里
数据库·redis·缓存
呼啦啦啦啦啦啦啦啦5 小时前
【Redis】持久化机制
java·redis·mybatis
方圆想当图灵15 小时前
缓存之美:万文详解 Caffeine 实现原理(下)
java·redis·缓存
LuckyRich118 小时前
2024年博客之星主题创作|2024年度感想与新技术Redis学习
数据库·redis·缓存