redis锁失效问题
2020-09-17 本文已影响0人
金融测试民工
问题说明:
锁的原理大家都清楚,但是开发过程中可能出现遗漏。如下情况就是同一redis锁key,连续3次调用redis分布式锁存在失效的可能。
具体操作:
同一redis锁key,同一时间连续3次调用请求,第一次请求拿取锁后处理中,第二次请求拿不到锁执行return,但是会执行finally导致锁释放,从而释放了锁。
如果第一次还未处理完成,第三次请求就会出现再次获取锁的情况。
修复方案:
1:将获取锁的tryLock2方法前置,放到try{} catch{} finally{} 代码块之前获取锁。
2:可以设置解锁条件标识,只有获取到锁的请求才能在finally解锁。