分布式锁bug的问题
来源:4-5 Redis原生实现分布式锁
weibo_慕仔1248210
2021-03-24
假设ab两个线程,通过redis设置超时时间加锁,执行语句依旧是对count进行自增,每个线程500次,如果a线程执行到250次的时候超时了,锁被释放了,但是a依旧在循环逻辑里面, 同时b加锁,执行自增逻辑,过段时间a恢复,继续执行剩下的250次自增,这种情况分布式锁是不是也不能保证得出的结果正确性,请问这种情况要怎么处理
写回答
1回答
-
嗯,这个就是在使用分布式锁的时候时间设置不恰当出现的问题,解决方案在Redis的RedLock里面使用了Watch Dog的策略,这个策略的目的就是给锁续时间的,只要你没有解锁,默认到期再添加30s,这样你这个锁就不会失效了,直到你手动释放锁为止
012021-03-30
相似问题