Redisson实现分布式锁(看门狗机制)
目录
可重入锁:
锁重试和看门狗机制:
主从一致性:
首先引入依赖,配置好信息

3.使用Redisson的分布式锁

可重入锁:
可重入锁实现是通过redsi中的hash实现的,key依旧是业务名称加id,然后第一个field存储线程唯一标识,value存储上锁的计数,同一个线程获取多次锁通过对锁的计数+来实现,释放通过-1来实现,当锁的数为零且锁是当前线程的锁的时候才可以释放锁

获取锁的lua脚本如下:
1.首先通关exists去判断这个key是否有锁
2.如果没有锁,则直接获取锁,通过hset命令创建所,通过expire设置过期时间。
3.如果锁存在,则根据field中存储的线程标识判断是否是当前线程的锁
3.1 如果是自己的,则获得锁,通过hincrby将锁的重入次数加1,并设置有效期
3.2 如果锁不是自己的,则获取失败

释放锁的lua脚本如下:
1.首先判断锁是否被自己持有,根据线程波标识,如果不是自己的,说明已经被释放
2.如果线程是自己的,则判断锁的重入次数是否大于0,
2.1 如果大于0说明不能释放,则对重入次数-1并重置有效期
2.2 如果等于0,则释放锁

锁重试和看门狗机制:
获取锁:
1.首先线程进入之后会尝试获取锁,
1.1如果获取成功,且没有设置过期时间,则会自动设置一个看门狗,锁有效期为30s,看门狗会每隔10s去检查线程是否执行完成,如果没有执行完成,则继续续10s时长,
1.2如果获取锁失败,则进入自旋去不断尝试获取锁,这中间有个判断剩余时间,如果超时,则返回false,如果没超时且拿到了释放锁的信号,则去尝试获取锁
释放锁:
1.线程首先尝试去释放锁,如果释放锁成功,则发送释放锁的消息,并取消看门狗
2.如果失败则记录异常并返回

总结:
可重入:redisson不同于redsi的setnx,他利用hash结构记录线程id和重入次数。
可重试:利用信号量,获取锁失败的会在等待时间内不断重复去获取锁
超时续约:利用看门狗机制,默认30s,每隔10s去判断锁是否释放,如果没释放则续期重置时间,释放则取消看门狗。
那么到这里我们已经解决了三个问题,现在还有主从一致性问题没有解决:
主从一致性:
redis的主从模式是指有一个主节点和多个从节点,主节点负责写操作,从节点负责读操作
主从同步是有一定延迟性的,所以这里需要确保主从的同步
这里就可以设置多个独立节点来实现,redisson封装了一个getMutiLock方法,他会尝试去获取每一个节点上的锁,只有都获取成功,才会真正拿到锁

获取锁之后使用方法和以前是一样的。
这样可以确保多节点的一致性,但是缺点就是运维成本较高,实现复杂
相关文章:
Redisson实现分布式锁(看门狗机制)
目录 可重入锁: 锁重试和看门狗机制: 主从一致性: 首先引入依赖,配置好信息 3.使用Redisson的分布式锁 可重入锁: 可重入锁实现是通过redsi中的hash实现的,key依旧是业务名称加id,然后第一个…...
记录一次显卡驱动安装
1. 驱动安装 1.1. 查看适合的版本 apt-get update ubuntu-drivers devices输出结果: 1.2. 安装合适的驱动版本 根据上面输出的内容 apt-get install nvidia-driver-545完成后重启 reboot查看新的驱动 nvidia-smi2. 安装/升级cuda 在nvidia-smi中显示的CUDA…...
nginx的作用是什么
Nginx是一个轻量级、高性能的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,它的作用广泛且重要。以下是Nginx的主要作用: 1. 作为Web服务器 高效处理静态文件:Nginx对静态文件(如HTML、图片…...
【全网最全】2024年华为杯研赛B题成品论文获取入口(后续会更新)
您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 点击链接加入【2024华为杯研赛资料汇总】:https://qm.qq.com/q/hMgWngXvcQhttps://qm.qq.com/q/hMgWngXvcQ你是否在寻找数学建模比赛的突破点&a…...
计算机网络(八) —— Udp协议
目录 一,再谈端口号 1.1 端口号 1.2 netsta命令 二,UDP协议 2.1 关于UDP 2.2 Udp协议格式 2.3 Udp协议特点 2.4 Udp的缓冲区 一,再谈端口号 http协议本质是“请求 - 响应”形式的协议,但是应用层需要先将数据交给传输层&…...
【Linux篇】TCP/IP协议(笔记)
目录 一、TCP/IP协议族体系结构 1. 数据链路层 (1)介绍 (2)常用协议 ① ARP协议(Address Resolve Protocol,地址解析协议) ② RARP协议(Reverse Address Resolve Protocol&…...
std::pair和std::tuple
提示:文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 前期疑问: 本文目标: 一、背景 最近 std::pair和std::tuple 二、用法 1.1 创建 看代码规范,提到:通过std::pair 和std::tuple ,函数可以同…...
Access denied for user ‘root‘@‘114.254.154.110‘ (using password: YES)
navicat 连接远程服务器报错 1045 - Access denied for user root114.254.154.110 (using password: YES)报错解释: 这个错误表示客户端从IP地址114.254.154.110尝试以用户’root’身份连接到MySQL服务器时,被拒绝访问。原因可能是密码错误、用户’roo…...
深度学习03-神经网络01-什么是神经网络?
神经网络的基本概念 人工神经网络(Artificial Neural Network,ANN): 是一种模仿生物神经网络的计算模型。由多个神经元(或称为节点)组成,这些节点通过不同的连接来传递信息。 每个神经元可以接…...
Redisson 分布式锁的使用详解
一、分布式锁的概述 1.1 分布式锁的背景 在单机系统中,Java 提供了 synchronized 和 Lock 等锁机制来确保并发情况下的线程安全。然而,在分布式系统中,多个服务实例运行在不同的物理或虚拟机上,无法直接使用这些本地的锁机制来控…...
计算机网络:物理层 --- 基本概念、编码与调制
目录 一. 物理层的基本概念 二. 数据通信系统的模型 三. 编码 3.1 基本概念 3.2 不归零制编码 3.3 归零制编码 3.4 曼切斯特编码 3.5 差分曼切斯特编码 编辑 四. 调制 4.1 调幅 4.2 调频 4.3 调相 4.4 混合调制 今天我们讲的是物理…...
使用Maven创建一个Java项目并在repository中使用
JDK环境:1.8.0_371 Maven环境 :Apache Maven 3.6.3 配置完成jdk和mvn后,进入到指定文件夹下执行如下语句: mvn archetype:generate -DgroupIdtop.chengrongyu -DartifactIdCyberSpace -DarchetypeArtifactIdmaven-archetype-quic…...
如何使用IIC外设(硬件IIC)
本文重点叙述如何使用芯片自带的 IIC 外设,即硬件 IIC,实现 IIC 通信。文章《IIC通信基础_cpu的iic通信-CSDN博客》 中,叙述了软件 IIC 通信和硬件 IIC 通信的区别, 并且重点叙述了 IIC 的通信协议。在使用软件进行 IIC 通信时&am…...
使用 Vue 3、Vite 和 TypeScript 的环境变量配置
使用 Vue 3、Vite 和 TypeScript 的环境变量配置 在开发现代前端应用时,环境变量是一个非常重要的概念。它可以帮助我们根据不同的环境(开发、测试、生产)配置不同的行为,比如 API 请求地址、调试选项等。在 Vue 3、Vite 和 Type…...
F28335 的串行外设接口(以下简称 SPI)
1 SPI 介绍 1.1 SPI 简介 1.2 F28335 的 SPI模块介绍 (1)F28335 的 SPI 特点...
科技引领未来生活——“光影漫游者”展览馆应用—轻空间
随着科技的快速发展,展览馆作为展示文化、科技和艺术的场所,正逐渐从传统的静态展示向高科技互动体验转变。由轻空间打造的“光影漫游者”展览馆,凭借其前沿的气承式结构和智能化系统,将参观者带入了一个未来感十足、充满科技魅力…...
ego-planner开源代码之启动参数介绍分析
ego-planner开源代码之启动参数介绍&分析 1. 源由2. 逻辑分析3. 启动参数section 1 三维地图尺寸section 2 里程计话题映射section 3 advanced_param.xml配置section 3.1section 3.2section 3.3section 3.4section 3.5section 3.6section 3.7section 3.8 section 4 轨迹服务…...
828 华为云征文|华为 Flexus 云服务器打造 Laverna 在线笔记应用
一、引言 在当今数字化时代,高效的笔记管理工具对于学习、工作和生活都至关重要。Laverna 作为一款功能强大的开源在线笔记应用,提供了 Markdown 编辑、加密支持等特性,是替代 Evernote 的绝佳选择。在 2024 年 9 月 14 日这个充满创新的日子…...
数据结构与算法-Trie树添加与搜索
trie树的使用场景 我们若需要制作一个通讯录的软件,使用常规树结构查询的复杂度为O(logn),但trie树的复杂度确与数据多少无关,与单词长度有关,这就大大缩减的查询的时间复杂度。 trie树的基本实现 基础结构 package com.study.trieDemo;i…...
AIGC专栏15——CogVideoX-Fun详解 支持图文生视频 拓展CogVideoX到256~1024任意分辨率生成
AIGC专栏15——CogVideoX-Fun详解 支持图&文生视频 拓展CogVideoX到256~1024任意分辨率生成 学习前言项目特点生成效果相关地址汇总源码下载地址 CogVideoX-Fun详解技术储备Diffusion Transformer (DiT)Stable Diffusion 3EasyAnimate-I2V 算法细节算法组成InPa…...
T型翼/尾板导向的穿浪双体船姿态控制【附代码】
✨ 长期致力于穿浪双体船、T型翼、尾板、多自由度姿态控制、舒适性评估研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)动态水翼升力模型与耦合运动方…...
机器学习模型评估中的构念效度:超越基准测试分数的科学推断
1. 项目概述与核心问题在机器学习的日常研究和工程实践中,我们每天都在和各种各样的基准测试(Benchmark)打交道。无论是为了比较新提出的ResNet变体在ImageNet上的Top-1准确率,还是评估一个大型语言模型在MMLU上的常识推理能力&am…...
AI赋能5G核心网故障诊断:从PCAP解析到智能根因分析的工程实践
1. 项目概述:当AI遇见5G核心网故障诊断在5G核心网的运维与测试一线干了这么多年,最头疼的莫过于面对海量的PCAP抓包文件。一个复杂的信令流程下来,动辄几千甚至上万个数据包,工程师需要像侦探一样,逐帧审视协议交互&am…...
AI智能体到底强在哪?为什么大家开始从“养龙虾”转向“养马”
那么AI智能体的核心能力是什么? 1、理解需求 它能分析你的真实意图,而不是只看表面的文字,比如让它整理这个月的消费情况,它明白之后,会读取账单,做分类统计,生成总结,最后输出图表。…...
别再手动点菜单了!用这招让Cadence Virtuoso Schematic效率翻倍(附Net高亮快捷键配置)
电路设计效率革命:Cadence Virtuoso Schematic高阶快捷键配置指南 在集成电路设计的浩瀚宇宙中,Cadence Virtuoso如同设计师手中的光刻机,每一次精准操作都直接影响最终芯片的性能与可靠性。然而,当面对数百个晶体管组成的复杂模…...
[智能体-69]:重新认知MCP:协议不生产智能,只是AI全域交互的标准化基石
MCP只是提供了大模型、编排调度、外部工具能够进行结构化交流的标准,而整个系统的智能主要依赖编排调度,与外部软件系统的交互取决于外部工具,包括外部语音交互、视觉交互、数字化交互。当下MCP(Model Context Protocol࿰…...
DeepSeek基准测试避坑手册:92%开发者忽略的4大陷阱——硬件配置偏差、tokenizer不一致、batch size幻觉、温度值污染
更多请点击: https://codechina.net 第一章:DeepSeek基准测试避坑手册:92%开发者忽略的4大陷阱——硬件配置偏差、tokenizer不一致、batch size幻觉、温度值污染 硬件配置偏差:GPU显存与计算精度的隐性干扰 在A100(8…...
2605.VGGT-Omega 论文解读: 3D重建的Scaling Law, Register Attention效率革命 | Oxford+Meta CVPR26 Oral
VGGT-Omega: Scaling Feed-Forward 3D Reconstruction Jianyuan Wang, Minghao Chen, Shangzhan Zhang, Nikita Karaev, Johannes Schonberger, et al. Visual Geometry Group, Oxford Meta AI | CVPR 2026 Oral | arXiv 2605.15195 Paper | Project Page 一句话总结 VGGT-Om…...
为内部知识库问答机器人接入Taotoken多模型增强回答效果
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部知识库问答机器人接入Taotoken多模型增强回答效果 构建一个高效的企业内部知识库问答机器人,核心挑战在于如何让…...
FairyGUI Unity鼠标悬停与点击对象获取原理与实战
1. 这不是“加个OnMouseEnter就能用”的事:FairyGUI在Unity中处理鼠标交互的真实困境很多人第一次在Unity里集成FairyGUI,想实现“鼠标悬停显示提示”或“点击高亮当前按钮”,下意识就去翻Unity的MonoBehaviour文档,找OnMouseEnte…...
