redis分布式锁的疑问:

来源:13-8 redis分布式锁

慕仙3255099

2017-11-30


String oldValue = redisTemplate.opsForValue().getAndSet(key, value);
if(!StringUtils.isEmpty(oldValue) && oldValue.equals(currentValue)) {
   return true;
}

这一段代码中,如果两个线程A和B同时访问,A先拿到锁,然后B拿不到锁但是却set了B的值。老师在视频中说A和B的value值相同,但是实际情况并不一定相同吧 。麻烦老师有空回复下哦 谢谢

写回答

1回答

廖师兄

2017-11-30

然后B拿不到锁但是却set了B的值,不是太懂你的意思。

getAndSet这个命令,redis做了控制,同一时刻只会有一个线程执行

2
2
波哥111
getset()方法是将给定 key 的值设为 value ,并返回 key 的旧值(old value)。不是返回新设置的值。
2018-01-09
共2条回复

Spring Boot双版本(1.5/2.1) 打造企业级微信点餐系统

从0到1开发中小型企业级Java应用,并学会迭代重构技巧

6410 学习 · 5247 问题

查看课程