分布式锁问题
来源:14-3 分布式锁双重防死锁演进
慕粉3884565
2019-01-29
代码中加了两重锁这里吗
写回答
1回答
-
亲爱的同学,你好,我是geely老师的助教。
首先需要声明一下,这个value存储的是一个时间戳的字符串。它代表将来的某一刻,也就是所谓的过期时间点。
当前没有上锁的时候,是可以通过setnx直接获取锁的,拿到锁后直接关闭订单。
如果当前已经被别人拿到锁了,那就去取出当前锁的value,和当前时间对比是否过期,如果已经过期了,使用getset把新的过期时间设置进去,并且拿到旧的值,之所以要这么做,是为了保证并发安全,只有取出来的旧值和之前取出来的value相等的时候,才说明真正的获取了分布式锁,否则就是竞争失败。
10
相似问题