首页 新闻 会员 周边 捐助

redis分布式锁什么时候要加续时的操作

0
悬赏园豆:10 [已解决问题] 解决于 2020-05-25 23:11

最近在看redis分布式,发现有两种问题和解决方案
1 AB并发,A先获取锁,并设置3s过期时间,但是业务处理需要4s,这样在3s的时候就被释放了?
答:为了防止没解释,锁就被释放,可以通过续时的方式,如redisson
2AB并发,A先获取锁,并设置3s过期时间,但是业务处理需要4s,所以第3s时候,B就会获得锁,A处理完删除锁,这时候删的是B锁?
答:通过指定value,每次删除锁的时候,判断是不是自己的锁,如果不是,就不要去删除

问题:感觉这两个有点矛盾,如果我按第一种方式续时,就不会出现第二种问题,那网上为什么会出现第二种问题的解决方案呢?或者说,要不要续时要看业务场景?

沃泽法克的主页 沃泽法克 | 初学一级 | 园豆:67
提问于:2020-05-18 21:49
< >
分享
最佳答案
0
第二种方案不合理,这达不到锁的效果,续租还是要的
收获园豆:10
yytxdy | 小虾三级 |园豆:1680 | 2020-05-19 11:22
其他回答(2)
0

过期时间可以长点,后面要删除的,如果不加过期时间,没有删除掉(异常跳过了删除操作),后面就会浪费内存空间;

悟行 | 园豆:12559 (专家六级) | 2020-05-19 08:23
0

获取锁,key设置一个较长的有效时间(比如30秒), 业务处理完成后根据value判断并删除key。

czd890 | 园豆:14488 (专家六级) | 2020-05-19 21:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册