对于分布式锁的⽣成通常需要注意如下⼏个⽅⾯
redis的普通key⼀般都允许覆盖,A⽤⼾set某个key后,B在set相同的key时同样能成功,如果是锁场景, 那就⽆法知道到底是哪个⽤⼾set成功的;这⾥jedis的setnx⽅式为我们解决了这个问题,简单原理是:当A⽤⼾先set成功 了,那B⽤⼾set的时候就返回失败,满⾜了某个时间点只允许⼀个⽤⼾拿到锁。 锁锁过过期期时时间间::某个抢购场景时候,如果没有过期的概念,当A⽤⼾⽣成了锁,但是后⾯的流程被阻塞了⼀直⽆法释放锁,那 其他⽤⼾此时获取锁就会⼀直失败,⽆法完成抢购的活动;当然正常情况⼀般都不会阻塞,A⽤⼾流程会正常释放锁;过期 时间只是为了更有保障。

浙公网安备 33010602011771号