当主节点挂掉时,如果数据还没有同步到从节点,就会出现数据不一致的情况。此时,客户端可能会获取到一个已经失效的锁,导致分布式锁的正确性受到破坏。为了解决这个问题,我们可以引入Redis的哨兵机制或集群模式。 Redis哨兵机制 Redis哨兵机制是通过运行一个或多个哨兵进程来实现的。哨兵进程负责监控Redis的运行状态,一旦发...
原因是可能存在某个节点加锁成功后返回客户端的响应包丢失了,这种情况在异步通信模型中是有可能发生的:客户端向服务器通信是正常的,但反方向却是有问题的。虽然对客户端而言,由于响应超时导致加锁失败,但是对 Redis节点而言,SET 指令执行成功,意味着加锁成功。因此,释放锁的时候,客户端也应该对当时获取锁失败的那些...