分布式锁2:基于redis实现分布式锁

news/2025/3/16 11:44:23/

一 redis实现分布式锁

1.1 原理

setnx+expire+del  命令实现redis的分布式锁;其中 setnx  不存在则新增;存在则忽略。即先用setnx来抢锁,如果抢到之后,再用expire给锁设置一个过期时间,防止锁忘记了释放。例如:

setnx  lock   111  ex  20 nx

但是如果expire无法执行, 会导致死锁,redis中setnx+expire是非原子操作, 除了用LUA脚本保证实现原子操作, 其实可以直接使用redis自带的set方法直接实现.


http://www.ppmy.cn/news/1147532.html

相关文章

[libevent:构建高性能事件驱动应用的利器]

引言 在现代互联网世界中,高性能和高并发是网络应用程序的关键要素。要实现这一目标,开发者需要使用一些高效的工具和技术。其中,Libevent是一个备受欢迎的C语言库,用于构建高性能的事件驱动应用程序。本文将介绍Libevent的基本概…

Filter(过滤器)Intercerptor(拦截器)

Filter过滤器 顾名思义,Filter可以对请求进行过滤,当浏览器发送请求时,首先先会被Filter进行拦截,Filter可以决定此次拦截是否放行,如果选择放行,放行之后还会返回Filter执行剩下的代码。 使用方法&…

代码随想录算法训练营第23期day19| 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

目录 一、(leetcode 654)最大二叉树 二、(leetcode 617)合并二叉树 三、(leetcode 700)二叉搜索树中的搜索 四、(leetcode 98)验证二叉搜索树 一、(leetcode 654&…

React 组件传 children 的各种方案

自定义组件的时候往往需要传 children,由于写法比较多样,我就总结了一下。 方案列表 1. 类组件1.1 类组件,不使用解构1.2 类组件,使用解构 2. 函数组件2.1 函数组件,不使用解构2.2 函数组件,外部解构2.3 函…

前端预览、下载二进制文件流(png、pdf)

前端请求设置 responseType: “blob” 后台接口返回的文件流如下&#xff1a; 拿到后端返回的文件流后&#xff1a; 预览 <iframe :src"previewUrl" frameborder"0" style"width: 500px; height: 500px;"></iframe>1、预览 v…

vue项目的学习周报03

学习周报 日期范围&#xff1a;2023年9月25日~2023年10月1日 学习目标&#xff1a;本周的学习目标是学习vue的基础知识 学习成果&#xff1a;在本周我完成以下任务和学习活动&#xff1a; 1.我完成了对vue.js的基础认识&#xff1b; 2.学习了通过index.js导入新的组件&#…

api接口为什么需要加密,PHP接口加密的方法有哪些

为什么需要进行加密: 保护敏感数据&#xff1a;许多应用程序需要在不同系统之间传输敏感数据&#xff0c;例如用户凭据、个人信息、金融信息等。接口加密可以确保这些敏感数据在传输过程中不会被未经授权的访问者窃取。 防止中间人攻击&#xff1a;在数据通过互联网传输的过程…

ubuntu安装Miniconda并举例使用

更新系统包 sudo apt update sudo apt upgrade官网下载Miniconda&#xff0c;最好是实体机下载后放进虚拟机&#xff0c;方法可以参考Xftp 7连接服务器或者本地虚拟机文章 https://docs.conda.io/en/latest/miniconda.html#linux-installers 进入安装目录执行&#xff0c;右键…