我实现了一个redis客户端(支持集群),并且提出了一个问题,以支持redis集群对分布式锁的支持。
我已阅读过redlock算法和相关辩论的帖子
实际上,不可能将一个密钥散列到redis集群中的不同节点,并且很难在特定规则中生成密钥,并确保它们不会在集群中迁移。在最坏的情况下,所有密钥槽可能存在于一个节点中。然后,可用性将与一个节点中的一个密钥相同。
我的解决方案是利用READONLY
模式的奴隶来确保
锁定密钥从主设备同步到其从设备的N / 2 + 1,以避免故障转移问题。
由于它是一个单键解决方案,迁移问题也无所谓。
SETNX
+在群集主节点中获取锁定的到期时间READONLY
模式检查从属节点中的锁定(可能有N个从属节点),如果N / 2 + 1同步成功则打破检查并返回True 你能帮我一个忙,看看算法是不是错了? 我曾经想过几个关于它的案例,但我仍然不太确定。