第十四天本地锁、Redis分布锁、Redisson锁三者的区别

news2024/12/26 9:27:51

一、为什么要有redis分布式锁,它解决了什么问题?

          在传统单体架构的项目下,使用本地锁synchronized和lock锁就可以锁住当前进程,保证线程的安全性,但是本地锁解决不了分布式环境下多个服务资源共享的问题,而分布式锁可以解决这个问题。

二、Redis分布式锁

 

1.加锁原子性--->set nxex + uuid全局唯一

2.删锁原子性--->通过redis+lua脚本

3.锁自动续期问题--->设置够长的过期时间。

最终目的:多个微服务抢占锁,最终只有一个微服务占用到锁并保证原子性。

三、Redissoon分布式锁

1、获取锁,就算锁名一样,多个微服务也是同一把锁

2、加锁是阻塞式等待,默认加的锁都是30s

3、看门狗自动续期机制:

        锁自动续期,如果业务超长,运行期间自动给锁续期上新的30s,不用担心业务时间长,锁自动过期被删除的造成的死锁问题。加锁的业务只要运行完成,就不会给当前锁续期,即使不手动解锁,锁默认在30s以后删除。

4、Redisson读写锁

读写锁:保证一定能读取到最新数据,数据修改期间,写锁是一个排它锁,读锁是一个共享锁

除了读读锁不互斥,其余锁都需要阻塞等待(互斥)。

5、闭锁
        Redisson闭锁是一种非常实用的分布式同步工具,可以帮助开发人员解决多线程并发访问共享资源的问题,可以阻塞多个线程,在多个应用程序之间共享,支持自动释放锁,防止因为线程崩溃或其他异常,例如秒杀业务只有10000件商品,用闭锁就可以实现商品不会出现超卖问题

6、Redisson信号量
        Redisson信号量是一种分布式锁,它可以控制多个线程对共享资源的访问,比如停车位,并发限流,Redisson信号量基于Redis实现,具有高性能、高可用性和可扩展性等优点。

总结:分布式架构下推荐使用Redisson分布式锁,因为原始的redis分布式锁存在两大严重问题,一是死锁问题、二是锁没有自动续期机制,而Redisson就完美解决了原始redis分布式锁的不足。

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

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

相关文章

产品研发流程管理

先看一张图,该图适应绝大部分的产品的 研发流程 (需要的可以去下 产品研发流程| ProcessOn免费在线作图,在线流程图,在线思维导图) 该图详细描述了,不同阶段应该做什么,具体的来说,是确定了什么时候 “开会…

高精度人员定位系统源码,采用vue+spring boot框架,支持二次开发

智慧工厂人员定位系统源码,高精度人员定位系统源码,UWB定位技术 文末获取联系! 在工厂日常生产活动中,企业很难精准地掌握访客和承包商等各类人员的实际位置,且无法实时监控巡检人员的巡检路线,当厂区发生灾…

【Python】实战:生成无关联单选问卷 csv《精神状态评估表》

目录 一、适用场景 二、业务需求 三、Python 文件 (1)创建文件 (2)代码示例 四、csv 文件 一、适用场景 实战场景: 问卷全部为单选题问卷问题全部为必填问题之间无关联关系每个问题的答案分数不同根据问卷全部问…

使用pandas和seaborn绘图

使用pandas和seaborn绘图 matplotlib实际上是一种比较低级的工具。要绘制一张图表,你组装一些基本组件就行:数据展示 (即图表类型:线型图、柱状图、盒形图、散布图、等值线图等)、图例、标题、刻度标签以及其他注解型…

【远程开发】VSCode使用Remote SSH远程连接Linux服务器

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转发自CSD…

【Unity】创建一个自己的可交互AR安卓程序

目录 1 创建一个AR场景2 配置AR Camera为前置摄像头3 配置打包场景4 下载官方提供的InteractiveFaceFilterAssets资源5 配置AR Face Manager6 创建眼镜预制件7 设置AR面部追踪8 测试效果8.1 在Unity中测试8.2 在安卓设备上测试 9 在该AR场景的基础上添加自己的想法9.1 改变眼镜…

【Java|golang】1042. 不邻接植花---邻接表着色

有 n 个花园,按从 1 到 n 标记。另有数组 paths ,其中 paths[i] [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中,你打算种下四种花之一。 另外,所有花园 最多 有 3 条路径可以进入或离开. 你需要为每个花园选择一…

C++用户信息管理服务 Thrift框架 Mysql数据落地 Redis数据缓存 Kafka 消息队列 总结 附主要源码

不知不觉入职已经一个月了,近期提交了考核2,要求如下: 1、编写一个管理用户信息的服务,通过thrift的远程过程调用实现用户信息管理功能 2、用户信息至少包括 唯一ID、用户名、性别、年龄、手机号、邮箱地址、个人描述 3、提供创建…

PHP+Vue+java导师学生双选系统设计与实现springnboot+pyton

为了直观显示系统的功能,运用用例图这样的工具显示分析的结果。分析的管理员功能如下。管理员管理学员,导师,管理项目信息,管理项目提交,管理指导项目信息。运行环境:phpstudy/wamp/xammp等 卓越导师双选系统根据调研&…

GCC 常用命令

GCC 编译过程 一个 C/C文件要经过预处理(preprocessing)、编译(compilation)、汇编(assembly)和链接(linking) 等 4 步才能变成可执行文件 (1) 预处理 C/C源文件中,以“#”开头的命令被称为预处理命令,如包含命令“#include”、…

系统集成项目管理工程师案例分析考点汇总(沟通/干系人、风险、合同等)

沟通及干系人管理常见考点1. 沟通管理计划的内容2. 项目绩效报告的主要内容3. 沟通中容易出现的问题4. 如何采取有效措施改进沟通5. 如何召开有效的会议 合同管理常见考点1. 合同签订时应注意的内容及条款2. 合同管理常见的问题3. 合同管理问题的应对措施 采购管理常见考点1. 采…

IntelliJ 上 Azure Event Hubs 全新支持来了!

大家好,欢迎来到 Java on Azure Tooling 的3月更新。在这次更新中,我们将介绍 Azure Event Hubs 支持、Azure Functions 的模板增强,以及在 IntelliJ IDEA 中部署 Azure Spring Apps 时的日志流改进。要使用这些新功能,请下载并安…

使用docker搭建Milvus向量数据库

Milvus向量数据库是什么? 官网是这样说的: Milvus创建于2019年,目标单一:存储、索引和管理由深度神经网络和其他机器学习(ML)模型生成的大量嵌入向量。 作为一个专门用于处理输入向量查询的数据库&#…

操作系统原理 —— 什么是系统调用?(五)

什么是系统调用? 有什么用作用? 我们想想怎么是系统调用呢? 系统调用 是操作系统提供给应用程序(程序员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。…

编译原理复习(2023.4.25考试版本)

本次复习采用的是这本书,如有书写不当的地方,欢迎批评指正! 第一章 第二章 符号串的运算 相等:两个符号串一模一样的 长度:数他有几个就行了 连接:跟在后面直接写就行了 符号传串的逆:在符…

详解UDP协议与实现UDP版本字典翻译客户端与服务器

文章目录 前言1. UDP协议介绍2.UDP Socket的介绍3. UDP版本字典翻译服务器4. UDP版本字典翻译客户端 前言 UDP协议也是传输层的一种协议,上篇文章我们介绍了TCP协议可以参考我的另一篇博客详解TCP协议以及实现TCP版本的字典翻译服务器客户端,以下来介绍…

【k8s】Wordpress(PHP+nginx+mysql)迁移到k8s

一、迁移思路: 1、制作服务镜像; 1.1 挑选合适的基础镜像; 1.2 准备代码相关的文件; 1.3 通过dockerfile构建镜像;2、制作Kubernetes服务,并完成调度; 2.1确定服务运行的模式(内部运行or 对外提供); 2.2确定服务所使用的控制器; 2.3服务是否…

【邀请函】第四届宁德国际新能源电池与智造技术产业大会(4月26 宁德)| 达索系统百世慧®

未来5-10年,新能源电池行业将呈现“一大支柱、两大应用场景、多元化技术线路”的发展特征。动力锂电池仍将主导新能源电池产业,并加速乘用场景落地。随着技术的日趋成熟,量产后成本下降,优势逐步凸显。 但随着技术迭代&#xff0…

Maya 贴图链接检测重链打包插件tjh_lost_textures_finder 1.3.3

一、问题描述: maya在模型材质贴图及渲染制作流程中,经常会遇到工程文件路径更改后,图片链接失效的问题,还有就是萌新们不懂规矩,图片路径乱放,而造成的图片打包时巨大工作量,南无阿弥陀佛。此…

vue关于echarts后端返回格式取值方法

在vue中,接口返回如下数据: data: {充电桩: [0, 0, 78], 红外摄像头: [0, 0, 0], 火焰探测器: [0, 1, 0], 烟雾传感器: [0, 1, 1], 限流保护器: [0, 0, 1]}, 其中数组里第一个值应该放在data1,第二个放在data2,第三个…