Redis 分布式锁

1.Redis 分布式锁实现

采用 机器ID+线程ID 做为 value

抢到锁后只有value 匹配上 才能做操作【删除,续命(看门狗)】

java 复制代码
# 客户端A(机器1)加锁
SET lock_key 123 NX EX 30  

# 客户端A业务超时,锁过期自动释放
# 客户端B(机器2)抢到锁
SET lock_key 456 NX EX 30  

# 客户端A业务执行完,执行DEL lock_key → 误删了客户端B的锁!

2.看门狗是在客户端执行的

Redis 服务器本身是无状态的键值存储服务,它只负责执行你发过去的指令(比如 SET、EXPIRE、Lua 脚本),不会主动创建线程去监控 / 续期某个 key------ 所有 "主动行为"(比如定时检查、自动续期)都由客户端自己实现。

客户端线程发起请求,Redis 只负责执行脚本并返回结果,不会跑任何 "看门狗" 相关逻辑。

如果 Redis 服务器来管续期,会出现致命问题:

Redis 要为每个锁 key 维护一个监控线程,高并发下(比如 10 万个锁),Redis 会被线程调度压垮,性能暴跌;

Redis 是集群部署时,主从切换 / 分片迁移会导致监控线程丢失,续期逻辑失效;

违背 Redis"极简核心 + 客户端扩展" 的设计原则(Redis 只做最核心的存储,复杂逻辑交给客户端)。

相关推荐
CJi0NG1 分钟前
【自用】MySQL - 语法:DDL、DML、DQL、DCL
数据库·mysql
姜鱼问生39 分钟前
数据库备份 + 灾难恢复演练:从 dump 恢复全库
运维·数据库
ao-weilai1 小时前
MySQL数据库:表约束
数据库·mysql·adb
ly76892 小时前
Redis 分布式锁的边界条件:Redlock 争议、锁续期与客户端崩溃后的互斥失效
数据库·redis·分布式·分布式锁·watchdog·redlock
kaixin_learn_qt_ing2 小时前
qgeoview-samples-basic
数据库
Omics Pro2 小时前
微软:多模态生物世界模型
数据库·人工智能·算法·microsoft·机器学习·自然语言处理
字节渡客3 小时前
接口明明返回成功,数据库偶尔就是没写入
数据库
Ivanqhz3 小时前
KV Cache
服务器·数据库·人工智能·深度学习·算法
Omics Pro3 小时前
~30,000+引用!理论2005,R包2008,多组学集成AI增强
开发语言·数据库·人工智能·算法·机器学习·自然语言处理·r语言
灯澜忆梦3 小时前
【minio】#5 | MinIO 分布式部署 + HTTPS 部署
分布式·网络协议·https·对象存储·minio