redis之红锁(Redlock)

关于分布式锁,一般有三种选择,

1、redis 

2、zk

3、DB锁(悲观锁、乐观锁)

其中用的最多的应该是redis。

redis常用的方式有单节点、主从模式、哨兵模式、集群模式。

单节点在生产环境基本上不会使用,因为不能达到高可用,且连RDB或AOF备份都只能放在master上,所以基本上不会使用。

另外几种模式都无法避免两个问题:

1、异步数据丢失。

2、脑裂问题。

所以redis官方针对这种情况提出了红锁(Redlock)的概念。

假设有5个redis节点,这些节点之间既没有主从,也没有集群关系。客户端用相同的key和随机值在5个节点上请求锁,请求锁的超时时间应小于锁自动释放时间。当在3个(超过半数)redis上请求到锁的时候,才算是真正获取到了锁。如果没有获取到锁,则把部分已锁的redis释放掉。

附上官方Redlock链接地址:https://redis.io/topics/distlock

猜你喜欢

转载自www.cnblogs.com/jylsgup/p/10739649.html