为什么RedLock获取多数节点的锁(N/2+1),就是成功获取到锁了?
来源:4-19 基于Redis实现真正高可用的锁--RedLock

enenhaha
2023-08-31
为什么RedLock获取多数节点的锁(N/2+1),就是成功获取到锁了?
写回答
2回答
-
ONE_PUNCH_MAN
2023-09-21
针对同一个锁(假如是以商品ID为标识的),如果A线程获取了多数的锁,那么余下的所有锁即使都被B线程获取了,那么B线程也是无法满足超过半数这个要求的,此时B线程一直都算作获取失败,会尽快释放已经获取的少数的锁。
但是如果A线程执行结束了,会发起释放的命令,此时的释放是针对所有节点的,也就是说,不仅是自己持有的多半的锁,包括其他失败的锁,都会释放。那么下一个线程(无论是在重复尝试的B线程或者新来的C线程)来的时候,都是有机会获取到超过半数的锁的。
所以并不会影响到下一次的使用。
00 -
enenhaha
提问者
2023-09-01
是第一次获取了一半+1,下去就获取不到一半+1了吧。。。
00
相似问题