关于A线程删除B线程上的Redis锁的问题

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

慕粉4331336

2021-04-05

这边老师使用了Thread Id来去在解锁的时候自己判断一下是否是自己,否则别删除,但是我想这似乎依然不能解决两个线程同时操作的问题,假如Thread A获取到了锁,然后由于GC停顿或者是等待长时间的IO,在未执行任何任务之前停止运行,导致失去了锁,Thread B获取到了锁,开始执行自己临界区的任务,此时A停顿结束,开始也执行自己的任务,这样也会导致临界区被同时执行,这样的情况如何去处理

写回答

1回答

InCowboy

2021-04-05

看的很仔细,这个得一个一个解决比如提到的锁的过期问题,在Redisson里面有一个watch dog的机制就是专门给锁“续命”的,至于你说到的gc,就是比如redis内存满了吧,那么这情况只能通过监控提醒了

0
4
InCowboy
回复
慕粉4331336
这种情况基本上不会存在的
2021-04-07
共4条回复

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

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

934 学习 · 353 问题

查看课程