当主节点被第一个线程加锁以后,还没有来得及把数据同步给子节点就宕机了,这个时候其中一个子节点会晋升为主节点,如果这个时候又来了一个线程2,会对新的主节点加锁,这个时候就会出现俩个线程持有同一个锁,没有了锁的互斥性,造成线程安全问题。
解决办法是用redisson的RedLock:
RedLock(红锁)锁:不能只在一个redis实例上创建锁,应该是在多个redis实例上创建锁(n/2+1),避免在一个redis实例上上锁。
我们的redis是AP高可用思想,如果实在要实现强一致性,那就用CP思想的Zookeeper解决主从一致性问题。