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 只做最核心的存储,复杂逻辑交给客户端)。

相关推荐
建筑工程企业管理系统2 小时前
erp工程项目管理系统落地价值:实现工程多项目成本精细化核算与管控
大数据·数据库·人工智能
AI大模型-小华2 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
foolishlee3 小时前
Neon wal日志处理流程2
数据库
2601_965798474 小时前
Is Hygia Good for Maid & Janitorial Sites? Technical Audit
服务器·网络·数据库
Cloud云卷云舒4 小时前
海山数据库(HaishanDB)面向工业云场景技术方案
数据库·haishandb·工业云·移动云海山数据库·天工云
逃逸线LOF4 小时前
Spring配置数据源{连接池}(Druid、c3p0)
java·数据库·spring
Valora5 小时前
简单学会redis
redis
严同学正在努力6 小时前
从备份到恢复:我用 30 分钟恢复了误删的核心业务表
android·java·数据库·ai
#六脉神剑7 小时前
myBuilder新版本(8月,Office文件预览、Oracle数据库支持)
数据库·oracle·开发平台·数字化工具·mybuilder
花青泽7 小时前
5-数据库-SQL注入-联合查询-AND/OR绕过-day13
数据库·sql