2024-05-02  阅读(200)
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/1315846526

回答

RedLock 是 Redis 作者提出的一个多节点分布式锁算法,它主要是解决单节点 Redis 分布式锁可能存在的单点故障问题。其核心思想是:不在单个 Redis 实例上进行加锁,而是在多个互相独立的 Redis 节点加锁,只有在大多数节点上解锁成功,锁才算获取成功。

扩展

单节点有什么问题

Redisson 支持多种分布式锁,如可重入锁、联锁、读写锁,但是这些锁都是基于单 Redis 节点锁,单节点的锁有什么问题呢?

  • 单点故障:如果 Redis 节点因为故障等原因导致 Redis 实例挂掉,那么所有这个 Redis 实例的节点都将无法获取到锁,会严重阻碍业务。
  • 主从同步问题:当我们使用集群部署 Redis,如果一个客户端在 Master 节点上获取到了锁,然后没有来得及将数据同步到 Slave 节点上,它就挂了。就算此时选举出来了一个新的 Master 节点,它里面也没有对应的锁信息,这个时候其他客户端就会获取锁成功,会导致并发问题。

Redis 官网也提到了这些问题:

RedLock 是如何解决的

  • 点赞