Redisson看门狗机制为什么比将锁设置成永久有效期更好?

个人主页金鳞踏雨

个人简介:大家好,我是金鳞,一个初出茅庐的Java小白

目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作

我的博客:这里是CSDN,是我学习技术,总结知识的地方。希望和各位大佬交流,共同进步 ~

前言:今天在后台私信中看到这样一条提问,我回看了一下之前的文章,发现关于这个点确实没有提到

XXXX:您好,我是一个初学者,在我学习到看门狗的时候,有一个疑问:如果需要看门狗的话,是不是说明不好设置超时时间,那为什么不直接将Redis中的key设置为永久有效,然后手动释放锁呢,如果是因为Redis中设置key为永久有效可能导致锁无法被释放,那看门狗机制不是也有概率会导致锁一直在延期呢,请您解答一下我的困惑可以吗?

当初我在写这篇文章的时候也是一个初学者,对于相关问题理解也不透彻,现在来回答一下这个问题。

文章链接如下:

Redisson的看门狗机制究竟有什么用?_redisson看门狗机制_金鳞踏雨的博客-CSDN博客Redisson提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期,也就是说,如果一个拿到锁的线程一直没有完成逻辑,那么看门狗会帮助线程不断的延长锁超时时间,锁不会因为超时而被释放。默认情况下,看门狗的续期时间是30s,也可以通过修改 Config.lockWatchdogTimeout 来另行指定。另外Redisson 还提供了可以指定leaseTime参数的加锁方法来指定加锁的时间,但是一旦使用了这个参数看门狗机制就失效了(不会自动续期)https://blog.csdn.net/weixin_43715214/article/details/128213580Redission架构图

看门狗机制

Redisson是一个基于Redis的Java库,提供了丰富的功能和扩展,包括分布式锁的实现。Redisson中的看门狗机制(Watchdog mechanism)用于处理Redisson分布式锁的超时问题

在Redisson中,分布式锁是通过在Redis中存储一个特定的键值对来实现的。这个键值对有一个设置的过期时间,用于定义锁的持有时间。当一个进程获取到锁时,Redisson会自动设置该键值对的过期时间,并启动看门狗机制。

看门狗机制的作用是定期续期锁的过期时间,确保锁在持有期间不会过期。它会周期性地对锁的键进行续期操作,避免锁在持有期间被意外释放。

然而,既然我们要周期性的对他就行续期,为什么不直接一步到位,设置成永久的呢???

使用看门狗机制相对于将锁设置为永久有效具有以下优点 

  1. 自动释放锁:看门狗机制能够自动在设定的超时时间内续期锁的有效期。这意味着,即使在锁持有者遇到故障、异常情况忘记手动释放锁的情况下,锁也会在超时时间后自动释放,避免了长时间的锁占用。

  2. 鲁棒性和可靠性:使用看门狗机制可以提高系统的鲁棒性和可靠性。无论是由于系统故障、网络问题、进程崩溃还是其他异常情况,锁都能够在超时时间内得到释放,从而避免死锁和资源泄漏的问题。

  3. 降低人为错误风险:将锁设置为永久有效需要依赖手动的操作来释放锁。这增加了人为错误的风险,例如忘记释放锁或释放锁的时机不正确。使用看门狗机制能够自动化这个过程,减少了人为错误的发生概率。

文章到这里就结束了,如果有什么疑问的地方,可以在评论区指出~

希望能和大佬们一起努力,诸君顶峰相见

再次感谢各位小伙伴儿们的支持!!!

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金鳞踏雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值