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

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

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

# Redisson入门

# Redisson可重入锁原理

获取锁的Lua脚本:

释放锁的Lua脚本:

# 锁重试原理分析

tryLock()底层代码分析

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

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

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

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

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

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

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

# 释放锁源码

# 总结

相关推荐
minihuabei1 小时前
linux centos 安装redis
linux·redis·centos
monkey_meng3 小时前
【Rust中多线程同步机制】
开发语言·redis·后端·rust
hlsd#4 小时前
go 集成go-redis 缓存操作
redis·缓存·golang
奶糖趣多多6 小时前
Redis知识点
数据库·redis·缓存
CoderIsArt7 小时前
Redis的三种模式:主从模式,哨兵与集群模式
数据库·redis·缓存
ketil2711 小时前
Redis - String 字符串
数据库·redis·缓存
王佑辉13 小时前
【redis】延迟双删策略
redis
生命几十年3万天13 小时前
redis时间优化
数据库·redis·缓存
Shenqi Lotus15 小时前
Redis-“自动分片、一定程度的高可用性”(sharding水平拆分、failover故障转移)特性(Sentinel、Cluster)
redis·sentinel·cluster·failover·sharding·自动分片·水平拆分
YMY哈18 小时前
Redis常见面试题(二)
redis