当前位置:   article > 正文

集群模式下,redis锁的问题,红锁_有必要一定用红锁吗

有必要一定用红锁吗

在使用redis来实现分布式锁的时候,如果redis是集群的,比如1主4从,这种主从模式就会存在延迟问题,导致加锁出现问题。

此时就应该使用红锁的方案,即在代码中不依赖于主从,将这5台机器视为平等的,在代码中依次对这5台机器去加锁,只有成功的机器数大于一半就算加锁成功,其他机器也就没必要再去操作了,相反,如果大于一半的机器失败了,就算失败,其他机器也就没必要再去操作了。

由于是遍历操作这5台机器,也就不用关心有没有机器挂掉了,因为挂掉了自然算加锁失败。红锁方案要求机器数为奇数。而且从原理上来看,每一个请求都会从前往后的顺序依次去操作这些机器,而不是乱序的,也就不会出现死锁的问题。

为什么叫红锁?
因为这个方案是redis创始人发明的,本应该叫 Redis Lock,但是简写成 RedLock。

在这里插入图片描述
问题1:
请求1依次加锁1,2,3成功,算成功,不巧此时机器3没了,数据也丢了,然而运维手速很快,立马搞了台新机器6放在了3的位置上,显然6里面并没有加锁的key,如果此时请求2来加锁,1错,2错,3对,4对,5对;显然就加锁成功了,于是就出现了并发问题了,这种情况呢,只能在运维手册里写明,这5台机器,要特殊对待,延迟一段时间再去部署,通过人为来把控。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/200972
推荐阅读
相关标签
  

闽ICP备14008679号