【Redis】RedLock算法讲解

什么是 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):

  1. 客户端 A 在 Master 上成功获取了锁。
  2. Master 在将锁同步到 Slave 之前崩溃了。
  3. 系统进行故障转移,其中一个 Slave 被提升为新的 Master。
  4. 此时,新的 Master 上并没有客户端 A 持有的锁。
  5. 客户端 B 向新的 Master 申请同一个锁,并且成功了!
  6. 结果:现在客户端 A 和客户端 B 都认为自己持有锁,导致数据不一致、竞争条件等严重问题。
    RedLock 就是为了解决这种在故障转移场景下的锁失效问题而诞生的。

简述一下 RedLock 算法的流程

RedLock 的核心思想是:“少数服从多数”。它不依赖单个 Redis 节点的可靠性,而是通过向多个独立的 Redis 节点申请锁,并根据成功获取锁的节点数量来判断是否真的获取到了锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Craaaayon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值