setnx作为分布式锁,它加锁时只作用在一个Redis节点,如果加锁的过程中,master挂掉,可能还没来得及同步到slave节点,故障迁移slave升级为master的时候就会导致锁的丢失
redlock高明的地方就在于它在节点上加锁的时候会保证半数以上的redis节点都已经存在这个key,value,故障迁移的slave节点肯定是数据最全的,所以切换的时候一般不会丢失数据。
Redlock:Redis分布式锁最牛逼的实现
相关资源:对项目的 redis cluster 实验多 master 写入、读写分离、高可用性