JAVA面试题:Redis分布式锁

Redis分布式锁

分布式锁使用的场景

集群情况下的定时任务,抢单,幂等性等场景

抢券场景

查询库存 -> 扣减库存

多个并发线程同时查询库存,出现超卖问题

添加互斥锁

所有线程执行操作之前必须尝试获取锁

保证一次只有一个线程能走查询库存->扣减库存的流程

Redis分布式锁实现原理

主要利用Redis的setnx(set if not exist)命令

set lock value nx ex 10
//获取锁
//设置过期时间防止获取锁时业务超时或服务宕机
del key
//释放锁

合理控制锁的有效时长

根据业务执行时间预估

加长锁的过期时间

给锁续期

使用redisson实现的分布式锁,基于setnx命令

watch dog

监控线程,监听持有锁的线程

加锁成功后每隔releaseTime/3的时间做一次续期

释放锁后通知watchdog

Redisson的获取锁方式

如果没有获取锁成功,会循环不断尝试获取锁直到超时

提高了分布式锁的可用性

Redisson实现的分布式锁–可重入

判断是否是同一个线程获取锁,如果是就可以成功获取

利用hash结构记录线程id和重入次数

请添加图片描述

key->线程名->重入次数

释放锁时会使锁的重入次数减一

Redisson实现分布式锁的主从一致性

RedLock:(实现繁琐,性能差)

在多个redis实例上创建锁(n/2+1)

n为redis节点数量

即超过redis实例的一半加锁

redis:AP思想:高可用性,最终一致

zookeeper:CP思想:强一致性

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

物业管理的隐形杀手:纸质点检表,你还在用吗?

在日常的生活中,我们经常会看到小区物业保洁、客服人员在工作岗位忙忙碌碌,但忽略了默默为我们提供舒适环境的“隐形守护者”——物业设施设备。然而,一旦这些设备出现故障,我们的日常生活就会陷入混乱。那么,如何确保…

Codesys中根据时间生成随机数字

一、 说明 LTIME()函数返回LTIME 时间类型数据 这个函数产生自系统启动以来经过的时间,以纳秒为单位,以扫描周期1ms为例,这个函数每次获得的纳妙数是随机的,没有规律。 二、作用 例如用来生成0到100的随机数,可以用L…

Keepalived LVS群集

一、Keepalived案例分析 企业应用中,单台服务器承担应用存在单点故障的危险 单点故障一旦发生,企业服务将发生中断,造成极大的危害 二、Keepalived工具介绍 专为LVS和HA设计的一款健康检查工具 支持故障自动切换(Failover&#…

乡镇联盟一镇一码联合创始人第一届第二次研讨会在中山圆满落幕

乡镇联盟一镇一码联合创始人第一届第二次研讨会在中山圆满落幕 近日,由“乡镇联盟一镇一码”项目的联合创始人余向强先生亲自主持的第一届第二次研讨会在中山成功举行。此次研讨会汇聚了来自全国各地的乡镇代表、行业专家及联盟核心成员,共同探讨乡镇发…

面向计算病理学的通用基础模型| 文献速递-视觉通用模型与疾病诊断

Title 题目 Towards a general-purpose foundation model for computational pathology 面向计算病理学的通用基础模型 01 文献速递介绍 组织图像的定量评估对于计算病理学(CPath)任务至关重要,需要从全幻灯片图像(WSIs&…

ITIL4背景下,ITSM产品应具备哪些特点?

点击进入IT管理知识库 随着信息技术的不断发展和普及,IT服务管理(ITSM)在企业中的地位日益凸显。而在ITIL4框架的指导下,ITSM产品的特点也随之发生了变化,更加注重灵活性、数字化和服务导向。本文将就ITIL4背景下&…

MemFire Cloud:为中国宝宝打造的一站式应用开发平台

在当今移动互联网时代,应用开发已经成为了许多企业和个人的迫切需求。然而,对于许多开发者来说,搭建服务往往是一个十分繁琐的过程,需要耗费大量的时间和精力。本文将带您探索应用开发前的繁琐之处以及如何通过MemFire Cloud轻松摆…

巴伦在接收链路中的应用

一、巴伦的定义 "巴伦"(Balun),是一种平衡-不平衡转换器,通常用于将平衡信号(如差分信号)转换为不平衡信号(如单端信号),或者反之。巴伦在无线通信、广播、天…

最新下载:CorelDraw 2023【软件附加安装教程】

简介: CorelDRAW Graphics Suite 订阅版拥有配备齐全的专业设计工具包,可以通过非常高的效率提供令人惊艳的矢量插图、布局、照片编辑和排版项目。价格实惠的订阅就能获得令人难以置信的持续价值,即时、有保障地获得独家的新功能和内容、一流…

【Uniapp】uniapp微信小程序定义图片地址全局变量

错误写法: main.js Vue.prototype.$imgUrl 图片地址这么写之后 就发现压根不起作用;获取到的是undefined 正确写法: 返回函数,后面可以拼上OSS图片完整路径 Vue.prototype.$imgUrl (url) > {return ("https://地址…

MySql 报错之 Truncated incorrect DOUBLE value: ‘111-7357916-9889033‘

1. 背景 查询sql时,出现报错:Truncated incorrect DOUBLE value: ‘111-7357916-9889033’ 2. 问题可能原因 2.1 数据类型不匹配 可能错误地将一个本应作为字符串处理的列或值用于了需要数值类型的计算或比较。检查SQL语句,确保数值类型…

【多线程】进程与线程

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. 操作系统2. 进程2.1 进程是什么2.2 进程管理2.3 进程调度2.3 内存管理2.4 进程间通信 3. 线程3.1 线程是什…

计算机组成原理-流水CPU-指令流水

一、指令流水的定义 指令流水线是计算机处理器中的一种设计,用于提高指令执行的效率。考虑到执行指令的每个阶段用到的硬件不同,它将处理指令的各个步骤分解为若干个阶段,并允许多个指令在同一时刻在不同的阶段执行,从而实现指令…

目标检测6:采用yolov8, RK3568推理的性能

最近有个小伙伴,问我rk3568上推理图片,1秒能达到多少? 本次采用模型为yolov8s.rknn,作了一次验证。 解析一段视频文件,1280*720, fps 24。读取视频文件,然后进行推理。 通过性能优化,发现推理…

网络安全快速入门(十七)计划任务

17.1 前言 在上一章节我们简单了解了Linux软件管理的一些相关操作,而在这张内容,我们来讲一下计划任务!计划任务,本质上来说就是特定的时间执行一些命令,因此被称为计划任务,我们接下来就具体来了解一下吧&…

01-Java和Android环境配置

appium是做app自动化测试最火的一个框架,它的主要优势是支持android和ios,同时也支持Java和Python脚本语言。而学习appium最大的难处在于环境的安装配置,本文主要介绍Java和Android环境配置,在后续文章中将会介绍appium的安装和具…

TextCtrl输入文本类

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 wx.StaticText类只能够用于显示纯粹的静态文本,但是有时需要输入文本与用户进行交互,此时,就需要使用wx.TextCtrl…

DataX(DataX简介、部署、同步数据)

DataX(DataX简介、部署、同步数据) ☀快乐无限 法力无边 目录 DataX(DataX简介、部署、同步数据) 1.DataX简介 1)数据采集模块: 2)数据写入模块: 2.DataX部署 1)Da…

人工智能超万卡集群的设计架构解读

超万卡集群的核心设计原则和总体架构 超万卡集群建设正起步,现主要依赖英伟达GPU及其配套设备。英伟达GPU在大模型训练中优势显著。国产AI芯片虽在政策与应用驱动下取得进步,但整体性能与生态建设仍有不足。构建一个基于国产生态、技术领先的超万卡集群&…

怎么找抖音高清视频素材下载网站

对于抖音视频创作者来说,找到合适的高清视频素材是提升视频质量和吸引观众关注的关键。高清视频素材可以使内容更具视觉冲击力,从而增加视频的观看次数和互动率。本文将介绍几个提供高清视频素材的下载网站,帮助你制作出更吸引人的抖音视频。…