分布式锁bug的问题

来源:4-5 Redis原生实现分布式锁

weibo_慕仔1248210

2021-03-24

假设ab两个线程,通过redis设置超时时间加锁,执行语句依旧是对count进行自增,每个线程500次,如果a线程执行到250次的时候超时了,锁被释放了,但是a依旧在循环逻辑里面, 同时b加锁,执行自增逻辑,过段时间a恢复,继续执行剩下的250次自增,这种情况分布式锁是不是也不能保证得出的结果正确性,请问这种情况要怎么处理

写回答

1回答

InCowboy

2021-03-28

嗯,这个就是在使用分布式锁的时候时间设置不恰当出现的问题,解决方案在Redis的RedLock里面使用了Watch Dog的策略,这个策略的目的就是给锁续时间的,只要你没有解锁,默认到期再添加30s,这样你这个锁就不会失效了,直到你手动释放锁为止

0
1
weibo_慕仔1248210
非常感谢!
2021-03-30
共1条回复

高级Redis进阶课 解决Redis实际问题+掌握Redis6.x特性

以项目整合Redis各种场景,从此轻松应对各类Redis难题

934 学习 · 353 问题

查看课程