在使用分布式锁的时候如何避免释放了别人的锁?

提问者:帅平 问题分类:面试刷题
在使用分布式锁的时候会出现线程A加锁成功,设置的过期时间是10秒,但是线程A处理花费了15秒,第10秒后锁自动过期,线程B加锁成功,此时第15秒线程A处理完释放了锁,但是这个锁是线程B的,不是线程A的,如何避免加的锁被别人释放了呢?

 您阅读本篇文章共花了: 

1 个回答
深海少女心
深海少女心
线程在加锁的时候,设置一个和自己相关的唯一标识进去,释放锁的时候,判断下锁的标识是否是自己设置的,例如设置锁的时候:
#设置uuid
SET lock $uuid EX 20 NX

释放锁的时候:
#判断是否是自己的锁,再释放
if redis.get("lock") == $uuid:
    redis.del("lock")
发布于:2周前 (04-02) IP属地:四川省
我来回答