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

一 redis实现分布式锁

1.1 原理

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

setnx lock 111 ex 20 nx

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

相关推荐
衣乌安、1 小时前
数据库事务原理与回滚机制
数据库
CodexDave2 小时前
PostgreSQL 明明有索引却选了 Nested Loop:从行数误判修正执行计划
数据库·postgresql·执行计划·扩展统计·nestedloop
czhaii3 小时前
STC ai助手单片机工程项目创建实例
数据库·mongodb
山峰哥4 小时前
数据库性能救星:Explain执行计划深度拆解
服务器·开发语言·数据库·sql·启发式算法
oradh4 小时前
Oracle 11g rac IP地址修改(public ip、vip、scan ip、priviate ip)
数据库·tcp/ip·oracle·rac ip地址修改
YOU OU5 小时前
Redis哨兵 & 集群
数据库·redis·sentinel
小罗水5 小时前
第8章 文档解析与文本切片
数据库·spring·spring cloud·微服务
梅头脑5 小时前
交易跨10个库、日均千万订单——选错一次分布式事务方案,加班三个月重写
java·分布式
瞬间&永恒~5 小时前
【MySQL】 主从复制多拓扑搭建实验
运维·数据库·mysql·云原生
han_hanker5 小时前
sql语法 DECODE, CASE ... WHEN
数据库·sql·oracle