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

news2024/12/26 10:37:13

个人主页:金鳞踏雨

个人简介:大家好,我是金鳞,一个初出茅庐的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. 降低人为错误风险:将锁设置为永久有效需要依赖手动的操作来释放锁。这增加了人为错误的风险,例如忘记释放锁或释放锁的时机不正确。使用看门狗机制能够自动化这个过程,减少了人为错误的发生概率。

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/610224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【测绘程序设计】C#伪距单点定位

文章目录 一、题目解读二、界面设计三、矩阵计算实现1、矩阵定义Matrix2、矩阵构造Matrix()3、单位矩阵MatrixE()4、加减乘操作符重载-*5、矩阵转置transposs()6、矩阵求逆Inverse() 四、数据存储结构设计1、Sat类存一颗卫星的数据2、Epoch类存一个历元的数据3、DataCenter类存…

Spring Cloud Alibaba - Sentinel(一)

目录 一、Sentinel介绍 1、什么是Sentinel 2、Sentinel好处 3、Sentinel下载和安装 二、搭建Sentinel项目 1、创建项目cloudalibaba-sentinel-service8401 三、Sentinel流控规则 1、流控规则基本介绍 2、新增流控 2.1、QPS直接失败案例 2.2、线程数直接失败案例 3、…

CF1839B Lamps

思路 这道题我们可以利用贪心的思想。 我们这里把 a i a_i ai​理解为第 a i a_i ai​层灯。 在层数相同的灯被破坏之后,灯的个数就会减少到 0 0 0,所以它一定不会影响到之后下一层的灯。 所以,我们贪心的思路是: 将每一层&am…

FreeRTOS学习(五)

延时函数 vTaskDelay():相对延时,指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束。vTaskDelayUntil():绝对延时,整个任务的运行周期看成一个整体,适用于需要按照一定频率运行的任务。 …

卡尔曼滤波与组合导航原理笔记(一)第二部分 卡尔曼滤波方程的推导

文章目录 三、卡尔曼滤波1、随机系统状态空间模型2、状态预测3、状态量测4、增益矩阵K与状态估计5、Kalman滤波公式汇总6、Kalman滤波流程图1.划分为左右两部分(一阶矩和二阶矩)2.划分为上下两部分(时间更新、量测更新) 7、Kalman…

Windows11安装kohya_ss详细步骤(报错、踩坑)

文章目录 笔者环境所需环境安装kohya_ss方式一:带有GUI的kohya_ss仓库方式二:kohya_ss核心仓库 笔者环境 OS:windows11Python:3.10.6CUDA11.6 所需环境 Python3.10.6GitCUDA11.6 安装kohya_ss 方式一:带有GUI的ko…

mybatis执行流程分析

mybatis全局配置文件 mybatis全局配置文件中涉及的标签如下图所示 配置文件解析 public static void main(String[] args) throws IOException {// 读取配置文件InputStream is Resources.getResourceAsStream("org/apache/ibatis/builder/MapperConfig1.xml");//…

chatgpt赋能python:Python多种颜色——提升SEO排名的技巧

Python多种颜色——提升SEO排名的技巧 在网站设计中,使用多种颜色可以提高用户体验和页面美观度。但你是否知道使用多种颜色还可以提高SEO排名呢?本文将介绍如何在Python代码中使用多种颜色来提高你的SEO排名。 什么是SEO? SEO的全称为“S…

chatgpt赋能python:Python备份文件夹:保障数据安全的最佳方法

Python备份文件夹:保障数据安全的最佳方法 数据备份是确保所有重要信息安全的关键部分。对于IT专业人士和计算机爱好者而言,文件夹备份是一项必不可少的任务。而Python是备份文件夹最流行的语言之一,因为它易于学习和使用。 在这篇文章中&am…

stable-diffusion基础问题记录

一、windows安装 1、启动 如果自己是anaconda,python版本不是3.10.6 conda create -n python_3_10_6 python3.10.6,创建一个这样的环境 修改webui-user.bat set PYTHOND:/software/Anaconda3/envs/python_3_10_6/python,把python换成这个…

【走进Linux的世界】Linux---基本指令(3)

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【Linux专栏】🎈 本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论💌 目录 date指令cal指…

12代CPU启用SR-IOV vGPU,实现一台电脑当七台用

背景 虚拟桌面基础设施(VDI)技术一般部署在服务器,可以实现多个用户连接到服务器上的虚拟桌面。随着桌面计算机性能的日益提升,桌面计算机在性能在很多场景下已经非常富余,足够同时满足多个用户同时使用的需求。实际项…

Redis的持久化详解

目录 一、Redis的持久化二、RDB(Redis DataBase)1、RDB快照原理2、RDB配置3、redis.conf 其他一些配置4、RDB的备份恢复5、RDB优缺点 三、AOF(Append Of File)1、AOF原理2、AOF配置3、AOF的备份恢复4、重写流程5、AOF优缺点 四、A…

MySQL | Windows服务器部署ZIP免安装版MySQL8.0+数据库笔记

Windows服务器部署ZIP免安装版MySQL8.0数据库笔记 文章目录 Windows服务器部署ZIP免安装版MySQL8.0数据库笔记下载MySQL压缩包编写配置文件环境变量初始化数据库安装MySQL服务安装错误:VCRUNTIME140_1.dll 登录 MySQL 下载MySQL压缩包 打开官网的下载页面&#xff…

POI报表的入门

POI报表的入门 理解员工管理的的业务逻辑 能够说出Eureka和Feign的作用 理解报表的两种形式和POI的基本操作熟练使用POI完成Excel的导入导出操作 员工管理 需求分析 企业员工管理是人事资源管理系统中最重要的一个环节,分为对员工入职,转正,离…

chatgpt赋能python:Python如何处理AI文件

Python如何处理AI文件 什么是AI文件? AI文件是Adobe Illustrator的标准文件格式。它包含了图形设计师所创建的矢量图形,这些矢量图形可以根据需要进行缩放和文件大小的调整。AI文件是专业印刷和设计领域中最常用的格式之一。 为什么要处理AI文件&…

深入ReentrantReadWriteLock

ReentrantReadWriteLock出现的原因 首先synchronized和ReentrantLock都是互斥锁,一个线程在获取锁资源之后另一个线程只能等待假设有一种情况是读多写少,并且确保线程安全。可以使用ReentrantReadWriteLock实现ReentrantReadWriteLock的特点是读读不互斥…

基于随身wifi的Tiny linux debian搭建教程

基于随身wifi的Tiny linux debian搭建教程 基于随身wifi的Tiny linux debian搭建教程基本信息进9008miko备份Qualcomm Premium Tool全分区备份 开adb刷debianssh连接扩展应用原版镜像测速ServerBox自动登录校园网 bug 基于随身wifi的Tiny linux debian搭建教程 基本信息 12芯…

Java8环境安装及配置

Java8环境安装及配置 一、下载JDK8二、安装三、环境变量配置四、验证 一、下载JDK8 本教程使用的是8u202版本,若需要其他版本可点击下方链接跳转下载。 Oracle下载,点击跳转选择版本 如下图所示,选择自己需要的版本下载 点击8u202版本 下载…

JavaSE进阶(day14,复习自用)

XML、XML解析、设计模式等 XMLXML概述XML的创建、语法规则XML文档约束方式一-DTD约束[了解]XML文档约束方式二-schema约束[了解] XML解析技术XML解析技术概述Dom4J解析XML文件Dom4J解析XML文件-案例实战 XML检索技术:Xpath设计模式:工厂模式设计模式&am…