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

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

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

# Redisson入门

# Redisson可重入锁原理

获取锁的Lua脚本:

释放锁的Lua脚本:

# 锁重试原理分析

tryLock()底层代码分析

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

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

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

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

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

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

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

# 释放锁源码

# 总结

相关推荐
ouou061716 小时前
企业级NoSql数据库Redis集群
数据库·redis·nosql
蒋星熠18 小时前
破壁者指南:内网穿透技术的深度解构与实战方法
网络·数据库·redis·python·websocket·网络协议·udp
躲在云朵里`21 小时前
Redis深度解析:核心数据结构、线程模型与高频面试题
数据结构·数据库·redis
恣艺21 小时前
Redis是什么?一篇讲透它的定位、特点与应用场景
数据库·redis·缓存
没有bug.的程序员1 天前
Redis 内存优化与压缩:从原理到实战的完整指南
java·数据库·redis·内存优化·压缩内存
肃清11 天前
《Redis核心机制解析》
数据库·redis·缓存
zhz52141 天前
Spring Boot + Redis 缓存性能优化实战:从5秒到毫秒级的性能提升
java·spring boot·redis·缓存·vue
恣艺1 天前
Redis环境搭建指南:Windows/Linux/Docker多场景安装与配置
linux·windows·redis
没有bug.的程序员1 天前
Redis Sentinel:高可用架构的守护者
java·redis·架构·sentinel
好多171 天前
《Redis的缓存策略》
数据库·redis·缓存