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

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

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

# Redisson入门

# Redisson可重入锁原理

获取锁的Lua脚本:

释放锁的Lua脚本:

# 锁重试原理分析

tryLock()底层代码分析

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

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

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

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

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

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

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

# 释放锁源码

# 总结

相关推荐
小白学大数据6 小时前
基于Scrapy-Redis的分布式景点数据爬取与热力图生成
javascript·redis·分布式·scrapy
Kookoos7 小时前
Redis + ABP vNext 构建分布式高可用缓存架构
redis·分布式·缓存·架构·c#·.net
dddaidai12320 小时前
分布式ID和分布式锁
redis·分布式·mysql·zookeeper·etcd
爱刘温柔的小猪1 天前
Redis+Caffeine构造多级缓存
redis·spring·缓存
hello1114-1 天前
Redis学习打卡-Day2-缓存更新策略、主动更新策略、缓存穿透、缓存雪崩、缓存击穿
java·redis·学习·缓存·javaweb
{⌐■_■}1 天前
【redis】redis常见数据结构及其底层,redis单线程读写效率高于多线程的理解,
数据结构·数据库·redis
HumoChen991 天前
jedis+redis pipeline诡异的链接损坏、数据读取异常问题解决
redis·pipeline·jedis
CircleMouse1 天前
springboot如何通过提供的注解方式来操作Redis
java·spring boot·redis·spring·mybatis
dddaidai1231 天前
Redis数据结构
数据结构·redis·hash table
文静小土豆1 天前
K8S redis 部署
redis·kubernetes·bootstrap