Redis 锁如果没有过期时间,持锁进程崩溃后锁会一直存在。正确做法是使用带 NX 和 EX 的原子命令。

SET lock:job token NX EX 30

释放锁时要校验 token,避免 A 的锁过期后 B 获得锁,A 又误删 B 的锁。

锁的超时时间要覆盖正常执行耗时,但不能无限长。如果任务可能很久,要考虑续期或重新设计任务切分。

分布式锁不是万能一致性方案,只适合控制重复执行或短临界区。

分类: 数据库与缓存 标签: Redis 缓存 高并发

评论

-- 评论已关闭 --

全部评论