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

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

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

# Redisson入门

# Redisson可重入锁原理

获取锁的Lua脚本:

释放锁的Lua脚本:

# 锁重试原理分析

tryLock()底层代码分析

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

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

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

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

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

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

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

# 释放锁源码

# 总结

相关推荐
武子康9 小时前
Java-193 Spymemcached 深入解析:线程模型、Sharding 与序列化实践全拆解
java·开发语言·redis·缓存·系统架构·memcached·guava
weixin_4624462311 小时前
一键修复 Redis + OpenVAS 权限和启动问题
数据库·redis·bootstrap
虹科网络安全16 小时前
艾体宝洞察 | 在 Redis 之上,聊一聊架构思维
数据库·redis·架构
十月南城18 小时前
持久化与内存管理策略——RDB/AOF、淘汰策略与容量规划的决策要点
redis
gugugu.18 小时前
Redis Hash类型深度解析:结构、原理与实战应用
数据库·redis·哈希算法
管理大亨19 小时前
Elasticsearch + Logstash + Filebeat + Kibana + Redis架构
redis·elasticsearch·架构
honortech20 小时前
外部连接 redis-server 相关配置
数据库·redis·缓存
不会写程序的未来程序员20 小时前
Redis 的内存回收机制详解
数据库·redis·缓存
不会写程序的未来程序员20 小时前
Redis 主从同步原理详解
数据库·redis·缓存
管理大亨21 小时前
安装部署Elasticsearch + Logstash + Filebeat + Kibana + Redis?
大数据·redis·elasticsearch