当前位置: 首页 > news >正文

Redis——》死锁

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

Redis——》死锁

  • 一、死锁场景
  • 二、如何避免死锁
    • 1、两条命令实现:SETNX加锁 + EXPIRE过期时间
      • (1)实现
      • (2)优点
      • (3)缺点
    • 2、一条命令实现:SET加锁 + EXPIRE过期时间
      • (1)实现
      • (2)优点
      • (3)缺点

一、死锁场景

// 加锁
SETNX lock_key 1// 业务逻辑
DO THINGS// 释放锁,删除key
DEL lock_key

以下情况会导致已经获得锁的客户端一直占用锁,其他客户端永远无法获取到锁,这就是死锁:

  1. 程序处理业务逻辑异常,没及时释放锁
  2. 进程挂了,没机会释放锁

二、如何避免死锁

方案:给锁设置一个过期时间
示例:假设操作共享资源的时间不会超过10s,那么加锁时,给这个key设置10s过期。

1、两条命令实现:SETNX加锁 + EXPIRE过期时间

(1)实现

SETNX lock_key 1    // 加锁
EXPIRE lock_key 10  // 10s后自动过期

(2)优点

锁可以被自动释放,其它客户端依旧可以拿到锁

(3)缺点

如果过期时间设置失败,依旧发生死锁问题。

原因:
加锁、设置过期时间是2条命令,这2条命令不能保证是原子操作(一起成功),有可能只执行了第一条,第二条却执行失败

场景:

  1. SETNX执行成功,执行EXPIRE时由于网络问题,执行失败
  2. SETNX执行成功,Redis异常宕机,EXPIRE没有机会执行
  3. SETNX执行成功,客户端异常崩溃,EXPIRE没有机会执行

2、一条命令实现:SET加锁 + EXPIRE过期时间

在Redis 2.6.12之后,Redis扩展了SET命令的参数,可以在SET的同时指定EXPIRE时间,这条操作是原子的。

(1)实现

SET lock_key 1 EX 10 NX // 10s后自动过期

(2)优点

解决死锁问题

(3)缺点

可能发生释放别人的锁(参考链接:Redis——》锁被别人释放)

相关文章:

Redis——》死锁

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...

URL重定向漏洞

URL重定向漏洞 1. URL重定向1.1. 漏洞位置 2. URL重定向基础演示2.1. 查找漏洞2.1.1. 测试漏洞2.1.2. 加载完情况2.1.3. 验证漏洞2.1.4. 成功验证 2.2. 代码修改2.2.1. 用户端代码修改2.2.2. 攻击端代码修改 2.3. 利用思路2.3.1. 用户端2.3.1.1. 验证跳转 2.3.2. 攻击端2.3.2.1…...

JavaScript(函数,作用域和闭包)

目录 一,什么是函数1.1,常用系统函数1.2,函数声明 1.3,函数表达式二,预解析2.1,函数自调用 2.2,回调函数三,变量的作用域3.1,隐式全局变量 四,作用域与块级作…...

C# 实现 国密SM4/ECB/PKCS7Padding对称加密解密

C# 实现 国密SM4/ECB/PKCS7Padding对称加密解密,为了演示方便本问使用的是Visual Studio 2022 来构建代码的 1、新建项目,之后选择 项目 鼠标右键选择 管理NuGet程序包管理,输入 BouncyCastle 回车 添加BouncyCastle程序包 2、代码如下&am…...

【docker-compose】【nginx】动态配置

需求:部署前端镜像时需要动态修改nginx反向代理的后端服务的ip地址 原.conf配置调整,改为嵌入变量的文件模版Dockerfile 修改,通过envsubst将换将变量注入模版后再运行nginxdocker-compose配置,通过environment动态修改变量 defau…...

ExpressLRS开源之接收机固件编译烧录步骤

ExpressLRS开源之接收机固件编译烧录步骤 1. 源由2. 编译步骤2.1 推荐源代码指定方案2.2 方法一:ELRS Configurator步骤一:下载ELRS Configurator工具步骤二:安装ELRS Configurator工具步骤三:使用ELRS Configurator工具进行配置步…...

提取视频文件里的音频和无声视频

一、提取视频文件里的音频: public static void generateMediaRadio(){// 视频提取器MediaExtractor extractor new MediaExtractor();try {//本地视频文件extractor.setDataSource("/storage/emulated/0/mjyyfep/alpha.mp4");//网络视频文件 // …...

SpringBoot原理

一、Bean原理 1、配置文件的优先级 SpringBoot项目当中支持的三类配置文件: ​ - application.properties - application.yml - application.yaml 配置文件优先级排名(从高到低): 1. properties配置文件 2. yml配置文件 3. yaml…...

MySQL事务原理、MVCC详解

事务原理 1 事务基础 1). 事务 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 2). 特性 原子性(Atomi…...

在Windows操作系统上安装Neo4j数据库

在Windows操作系统上安装Neo4j数据库 一、在Windows操作系统上安装Neo4j数据库 一、在Windows操作系统上安装Neo4j数据库 点击 MySQL可跳转至MySQL的官方下载地址。 在VUE3项目的工程目录中,通过以下命令可生成node_modules文件夹。 npm install(1&am…...

国民八路参考文献:[8]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑工业出版社,2022.

国民八路参考文献:[8]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑工业出版社,2022&#xff0…...

24 Linux高级篇-备份与恢复

24 Linux高级篇-备份与恢复 文章目录 24 Linux高级篇-备份与恢复24.1 安装dump和restore24.2 使用dump备份24.4 使用restore恢复 学习视频来自于B站【小白入门 通俗易懂】2021韩顺平 一周学会Linux。可能会用到的资料有如下所示,下载链接见文末: 《鸟哥的…...

微信小程序的图书馆预约系统设计与实现

摘 要 近年来随着社会竞争压力的不断加剧,人们需要不断充实自己的学识来提升自己的竞争力,对于在校的大学生而言需要利用在校期间实现考研考编的内容,职场的上班族需要通过考取职业技能资格证书来实现升职加薪,各行各业的人们都在…...

《2023年网信人才培训-网络安全从业人员能力素养提升培训》第一期成功举办

随着网络强国和数字中国建设的步伐加快,建设规模宏大、结构合理、素质优良的人才队伍成为一项重要工作。知了汇智作为数字产教融合基地,通过与高校、企业等多方合作,建立了完整的网络安全人才培养生态链。凭借自身技术优势和丰富的产业资源&a…...

WebGpu VS WebGL

推荐:使用 NSDT场景编辑器 助你快速搭建3D应用场景 WEBGPU VS. WEBGL 粗略地概述一下WebGPU与WebGL的不同之处是很有用的。在不涉及太多复杂的技术细节的情况下,两者的整体设计大致如下: WebGL和OpenGL一样,涉及许多单独的函数调…...

HTML <tfoot> 标签

实例 带有 thead、tbody 以及 tfoot 元素的 HTML 表格: <table border="1"><thead><tr><th>Month</th><th>Savings</th></tr></thead><tfoot><tr><td>Sum</td><td>$180<…...

VScode的PHP远程调试模式Xdebug

目录 第一步、安装VScode中相应插件 remote-ssh的原理 ssh插件&#xff1a; PHP相关插件&#xff1a; 第二步、安装对应PHP版本的xdebug 查看PHP具体配置信息的phpinfo页面 1、首先&#xff0c;打开php编辑器&#xff0c;新建一个php文件&#xff0c;例如&#xff1a;inde…...

HTML5-2-链接

HTML使用标签 <a>来设置超文本链接。 超链接可以是一个字&#xff0c;一个词&#xff0c;或者一组词&#xff0c;也可以是一幅图像&#xff0c;您可以点击这些内容来跳转到新的文档或者当前文档中的某个部分。 默认情况下&#xff0c;链接将以以下形式出现在浏览器中&am…...

Java--常用jar命令

jar常用指令 jar命令参数&#xff1a; jar命令格式&#xff1a;jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名... 其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数&#xff0c;文件名也是必须的。 -c 创建一个jar包 -t 显示jar中的内容列表 -x 解压jar包 …...

微服务中间件--多级缓存

多级缓存 多级缓存a.JVM进程缓存1) Caffeine2) 案例 b.Lua语法1) 变量和循环2) 条件控制、函数 c.多级缓存1) 安装OpenResty2) 请求参数处理3) 查询Tomcat4) Redis缓存预热5) 查询Redis缓存6) Nginx本地缓存 d.缓存同步1) 数据同步策略2) 安装Canal2.a) 开启MySQL主从2.b) 安装…...

开发笔记:VSCode + Qt + clangd 明明能正常运行却满屏红波浪线

目录 开发笔记&#xff1a;VSCode Qt clangd 明明能正常运行却满屏红波浪线 前言 一、问题现象 二、根本原因&#xff1a;两套工具互不沟通 三、完整解决方案 方案 1&#xff1a;配置 .clangd&#xff08;最推荐、最根治&#xff09; 方案 2&#xff1a;自动生成 comp…...

音乐留学路上,这些坑我替你踩过了|纯干货分享

写给正在准备或即将踏上音乐留学之路的你嘿&#xff0c;准备音乐留学的你。我知道你现在可能既兴奋又焦虑&#xff0c;手里攥着梦想&#xff0c;却不知道下一步该往哪走。别慌&#xff0c;作为过来人&#xff0c;我想跟你聊点实在的。"音乐留学不是终点&#xff0c;而是你…...

Qwen3.5-9B企业落地:制造业BOM表识别+物料替代方案生成实战

Qwen3.5-9B企业落地&#xff1a;制造业BOM表识别物料替代方案生成实战 1. 项目背景与价值 在制造业生产过程中&#xff0c;物料清单(BOM)管理和物料替代是常见的痛点问题。传统方式需要人工核对大量表格数据&#xff0c;效率低下且容易出错。Qwen3.5-9B作为90亿参数的开源大语…...

axios 供应链投毒事件完整报告:史上最大 npm 攻击技术分析

axios 供应链投毒事件完整报告:史上最大 npm 攻击技术分析 2026年3月31日 | 安全分析报告 一、事件概述 2026年3月31日,npm 生态遭遇了有记录以来针对顶级包最复杂的供应链攻击。攻击者劫持了 axios(全球每周下载量超 8300 万次)核心维护者的 npm 账号,发布了两个恶意版…...

YOLO12快速部署指南:Gradio界面已配好,启动就能用

YOLO12快速部署指南&#xff1a;Gradio界面已配好&#xff0c;启动就能用 1. 为什么选择YOLO12镜像 YOLO12作为2025年最新发布的目标检测模型&#xff0c;带来了革命性的注意力为中心架构。这个预配置好的镜像让您无需任何复杂操作&#xff0c;就能立即体验最先进的目标检测技…...

Zotero Connector进阶:定制知乎内容抓取与快照/正文模式切换详解

1. 为什么需要定制知乎内容抓取&#xff1f; 作为一款强大的文献管理工具&#xff0c;Zotero在学术论文管理方面表现出色&#xff0c;但在处理知乎这类内容平台时却常常力不从心。我最初使用Zotero Connector抓取知乎内容时&#xff0c;经常遇到只保存了网页快照而无法获取完整…...

高效低成本馈电保护电路设计与应用

1. 为什么需要馈电保护电路&#xff1f; 有源天线在通信系统中扮演着重要角色&#xff0c;但实际使用中经常会遇到一些棘手的问题。比如在野外作业时&#xff0c;技术人员可能会频繁插拔天线&#xff1b;或者在长期运行过程中&#xff0c;天线内部电路可能出现故障。这些情况都…...

从 Python 和 Node.js 的流行看 Java 的真实位置

很多 Java 程序员都会有一个感觉&#xff1a;Python 很火&#xff0c;Node.js 也很火&#xff0c;Java 是不是没落了&#xff1f; 先说结论&#xff1a;Java 没有没落&#xff0c;只是位置变了。一、为什么 Python 和 Node.js 看起来更火 1. Python 火&#xff0c;是因为 AI 太…...

超导电路阵列实验方案 V1.0桌面量子引力实验(自指动力学与类时空关联涌现)

超导电路阵列实验方案 V1.0 桌面量子引力实验&#xff08;自指动力学与类时空关联涌现&#xff09; 方案编号&#xff1a;SR-EXP-QG-001 版本&#xff1a;V1.0 一、核心科学目标 1. 科学目标 在一维/二维超导量子比特阵列中&#xff0c;引入全局量子态测量 实时反馈构建强自指…...

Nunchaku FLUX.1 CustomV3部署案例:AI绘画培训课程实训环境标准化镜像交付方案

Nunchaku FLUX.1 CustomV3部署案例&#xff1a;AI绘画培训课程实训环境标准化镜像交付方案 1. 引言&#xff1a;当AI绘画遇上教育培训的规模化挑战 如果你正在运营一个AI绘画培训班&#xff0c;或者负责一个数字艺术学院的课程设计&#xff0c;你肯定遇到过这样的难题&#x…...