# 基于setnx实现的分布式锁存在的问题:
# 为了解决上面的问题,可以用Redisson
# Redisson入门
# Redisson可重入锁原理
获取锁的Lua脚本:
释放锁的Lua脚本:
# 锁重试原理分析
tryLock()底层代码分析
time:剩余的等待重试时间 ttl:现被持有的锁的剩余有效时间
计算尝试获取锁所消耗的时间,然后再计算出等待获取锁的剩余时间time,
如果time<=0,则不再重试了直接返回获取锁失败,
如果time>0,则通过subscribe去订阅别人释放锁的通知信号,如果在剩余的等待重试时间time里还没有等到通知信号,则取消订阅;
如果在剩余的等待重试时间里订阅到释放锁的信号了,就再重新计算一次剩余的等待重试时间time,如果time>0,则进入while(true)循环中尝试获得锁。
释放锁的lua脚本中的发布消息通知
# 看门狗更新锁有效时间 源码分析
# 释放锁源码
# 总结
文章来源:https://www.toymoban.com/news/detail-681760.html
文章来源地址https://www.toymoban.com/news/detail-681760.html
到了这里,关于Redisson分布式锁 原理&源码 分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!