【redis】redis分布式锁(三)自动续期

news2024/11/26 0:26:15

系列文章目录

【redis】redis分布式锁(一)手写分布式锁1.0~6.0
【redis】redis分布式锁(二)可重入锁+设计模式


文章目录

  • 系列文章目录
  • 前言
  • 一、CAP
    • redis集群 AP
    • ZooKeeper集群 CP 数据一致性
    • Eureak集群 AP
    • nacos集群 AP
  • 二、lua脚本
    • 脚本:`if redis.call('HEXISTS',KEYS[1],ARGV[1]) == 1 then return redis.call('expire',KEYS[1],ARGV[2]) else return 0 end`
  • 三、融合进业务类
  • 四、redis分布式锁的总结
    • V1.0 和 V2.0 单机锁
    • V3.0 和 V4.0 finally删除锁、自旋、过期时间、lua脚本保证原子化执行
    • V5.0 和 V6.0 5.0删除锁时需要同时判断锁是否为自己的,6.0unlock用到lua脚本原子化执行。至此,小厂可以使用V6.0版本。
    • V7.0 可重入锁 使用hset来替代原来的setnx、lua脚本、以及实现Lock接口的AQS规范、工厂模式的引入
    • V8.0 自动续期 保证锁在业务类执行期间不会过期,自动续期


前言

在这里插入图片描述


一、CAP

在这里插入图片描述

redis集群 AP

在主节点set的值,但是在复制给从机过程中宕机了,这时候从机上位是不能获取这个值的
在这里插入图片描述

ZooKeeper集群 CP 数据一致性

CP:
在这里插入图片描述
故障:牺牲了高可用,即在一台master宕机后,选举新master时,zk服务不可用
在这里插入图片描述

Eureak集群 AP

AP:
在这里插入图片描述

nacos集群 AP

在这里插入图片描述

二、lua脚本

脚本:if redis.call('HEXISTS',KEYS[1],ARGV[1]) == 1 then return redis.call('expire',KEYS[1],ARGV[2]) else return 0 end

在这里插入图片描述


三、融合进业务类

在锁的代码
在这里插入图片描述

在这里插入图片描述
主线程代码
在这里插入图片描述
执行:
在这里插入图片描述


四、redis分布式锁的总结

在这里插入图片描述

V1.0 和 V2.0 单机锁

在这里插入图片描述

V3.0 和 V4.0 finally删除锁、自旋、过期时间、lua脚本保证原子化执行

在这里插入图片描述

V5.0 和 V6.0 5.0删除锁时需要同时判断锁是否为自己的,6.0unlock用到lua脚本原子化执行。至此,小厂可以使用V6.0版本。

在这里插入图片描述

V7.0 可重入锁 使用hset来替代原来的setnx、lua脚本、以及实现Lock接口的AQS规范、工厂模式的引入

在这里插入图片描述
在这里插入图片描述

V8.0 自动续期 保证锁在业务类执行期间不会过期,自动续期


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

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

相关文章

1 认识仿真工具Packet Tracer【实验】【计算机网络】

1 认识仿真工具Packet Tracer【实验】【计算机网络】 前言推荐1 认识仿真工具Packet Tracer1.1账号注册与Packet Tracer软件下载1.1.1 下载1.1.2 安装 1.2 Packet Tracer界面简介1.2.1 总述1.2.2 详细 1.3网络拓扑构建与设备模块添加1.3.1如何往工作区中添加设备1.3.2添加连线1…

【计算机网络】1.1——因特网概述

因特网概述(了解) 网络、互联网和因特网 网络由若干结点和连接这些结点的链路组成 多个网络还可以通过路由器互连起来,互联网是"网络的网络“ internet 和 Internet internet(互联网或互连网)是通用名词 泛指…

Java 基础入门篇(四)——— 方法的重载与参数传递机制

文章目录 一、方法的定义二、方法的参数传递机制 ★2.1 基本类型的参数传递2.2 引用类型的参数传递 三、方法重载 一、方法的定义 方法的作用:封装一段代码的语法结构,可以被重复调用,以此提高代码的复用性,提高开发效率&#xf…

操作系统之线程

线程 一、产生原因 最开始的并发,只能更具切换进程的方式去交替执行进程来宏观上并发,但是切换进程需要切换执行进程的环境,有很大的系统开销,所以产生了线程,让其可以不用频繁的切换进程,使得线程成为CPU…

【论文笔记 fintune 】羊驼

1.论文 这些开发由两个关键组件提供动力:大型预训练语言模型(LM)和人工编写的指令数据。 1.1 背景 目前的训练太吃数据了,需要使用一些替代方法减少对数据的依赖有微调过的数据集效果远好于没有微调 用什么数据集微调呢&#x…

Collaborative Metric Learning(www 2017)

Background 传统基于MF的模型,将特征向量的点积作为预测结果,这存在一个很大的问题,即dot product 不满足三角不等式),这会导致学到的特征向量次优(难以捕捉用户细粒度的偏好)。本文提出了一种…

【Java笔试强训 20】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥字符串反…

第十八章 协程

我们知道脚本都是继承自MonoBehaviour类,而其中的Update方法里面放置了大部分的游戏逻辑处理代码。Update方法是游戏循环的每一帧都去执行,这就要求我们的代码“无时无刻”不在处理所有的可能发生的情况,并做出相应的处理。如果我们想要完成“…

Vue之render函数

概述 render函数从名字上看就可以看出,它是一个用于渲染的函数,在Vue中我们要将我们写的界面展示到屏幕上时,使用的方式都是组件中的template:标签下编写内容后,由Vue将我们编写的界面渲染到屏幕上。而这个render函数就是比templ…

B. Divide Candies(数学 + 思维)

Problem - B - Codeforces Arkady和他的朋友们喜欢在一个n n的棋盘上玩跳棋。这个棋盘的行和列从1到n编号。 他的朋友们最近赢了一场比赛,所以Actady想用一些糖果来取悦他们。记得一则古老寓言(但不记得寓意)》,Arlady想给他的朋友们每个格子一个糖果组…

SpringMVC学习总结(一)SpringMVC简介入门案例

SpringMVC学习总结(一)SpringMVC简介/入门案例 一、SpringMVC简介 (一)什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分。 M:Model,模型层,指工程中的Ja…

手把手教你学会gitee的注册和代码的提交

欢迎来到壮壮的代码世界 gitee的注册和提交 一、gitee是什么?二、gitee怎么注册三、gitee的一些基本配置四、在gitee上创建远程仓库(存储代码的地方)五、clone远程仓库到本地电脑六、怎么把本地的代码推送到远程仓库去(git的三板斧…

jQuery操作

文章目录 1. jQuery基本介绍1.1 原理示意图1.2 快速入门1.2 什么是jquery对象1.3 dom对象转jQuery对象1.4 jQuery对象转dom对象1.5 jQuery选择器1.5.1 jQuery基本选择器1.5.2 jquery层次选择器1.5.3 基础过滤选择器1.5.4 内容过滤选择器1.5.5 可见度过滤选择器1.5.6 属性过滤选…

Vue(Vue脚手架)

一、使用Vue脚手架(Vue Cli) Vue官方提供脚手架平台选择最新版本: 可以相加兼容的标准化开发工具(开发平台) 禁止:最新的开发技术版本和比较旧版本的开发平台 Vue CLI🛠️ Vue.js 开发的标准工…

AWS VPC 配置指南:快速创建和设置你的虚拟私有云

文章目录 一、前言二、创建 VPC2.1 进入 AWS VPC 服务2.2 创建 VPC2.3 选择所要创建的 VPC 资源2.4 输入 VPC 名称2.5 设置 IPv4 CIDR block(IPv4 CIDR 块)2.6 选择可用区2.7 选择公有子网的数量2.8 设置 NAT 网关和 VPC 终端节点2.9 完成创建 VPC2.10 查…

python ast 详解与用法

目录 基本概念节点类型ast.Assignast.Nameast.Constantast.Callast.Attribute 结点的遍历ast源码示例 结点的修改示例 参考链接 基本概念 python 语言在编译前会解析为抽象语法树,整个文件可以看作一棵树,树上的每个节点就代表一条语句,中序…

计算机中找不到msvcp140.dll无法继续执行代码,解决方法

DLL是Dynamic Link Library的缩写,意为动态链接库。dll文件是电脑系统及软件运行的重要文件,电脑如果丢失dll文件,那么很多软件跟游戏都是无法运行的,msvcp140.dll丢失这个问题就有很多小伙伴遇到,小编今天就分享找不到…

山东专升本计算机第一章-计算机信息技术与计算机文化

计算机信息技术与计算机文化 计算机中的信息表示 数制及其转换 数制:用进位的原则进行计数数码:数制中表示基本数值大小的不同数字符号基数:一种数制所使用的数码个数位权:数码在不同位置的权值 数制的转换 • R进制转化为十进…

【操作系统和强化学习】1.内存管理策略

文章目录 前言1.内存是什么1.1 基本硬件保护措施 碎片1.2 分段机制1.2.1 分段硬件1.3 分页 前言 CPU的调度可以提高CPU的利用率和计算机的响应用户的速度。为了改进性能,应该将多个进程保存在内存中。也就是说必须共享内存。 本文讨论的是如管理内存。 1.内存是什么…

知识变现海哥:我是如何通过知识变现年赚100万的

我叫王海青,大家都称我海哥,是一名知识变现导师,海青教育创始人。从2011年开始,已经从事知识变现培训服务10多年,帮助3000人实现了个人知识技能变现,一直致力于帮助普通人,把自己的一项知识技能…