什么是 RedLock ? 为什么要使用 RedLock ?
RedLock(Redis Distributed Lock) 是 Redis 官方提出的一种用于在分布式系统中实现分布式锁的算法。它的设计目标是在一个由多个独立 Redis 节点(通常是主节点,而不是哨兵或集群模式)组成的环境中,提供一个比单实例 Redis 锁更安全、更可靠的锁服务。
在理解 RedLock 之前,我们先要知道一个简单的单节点 Redis 锁存在什么缺陷。
单节点 Redis 锁主要使用 SET resource_name my_random_value NX PX 30000 命令来实现,它存在一个致命缺陷 - 单点故障(Single Point of Failure)。
假设我们只有一个 Redis 主节点(Master):
- 客户端 A 在 Master 上成功获取了锁。
- Master 在将锁同步到 Slave 之前崩溃了。
- 系统进行故障转移,其中一个 Slave 被提升为新的 Master。
- 此时,新的 Master 上并没有客户端 A 持有的锁。
- 客户端 B 向新的 Master 申请同一个锁,并且成功了!
- 结果:现在客户端 A 和客户端 B 都认为自己持有锁,导致数据不一致、竞争条件等严重问题。
RedLock 就是为了解决这种在故障转移场景下的锁失效问题而诞生的。
简述一下 RedLock 算法的流程
RedLock 的核心思想是:“少数服从多数”。它不依赖单个 Redis 节点的可靠性,而是通过向多个独立的 Redis 节点申请锁,并根据成功获取锁的节点数量来判断是否真的获取到了锁。

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



