关于解锁操作的问题

来源:13-8 redis分布式锁

无法显示sky

2019-12-06

图片描述
①为什么需要判断是否currentValue.equals(value)呢?在加锁过程中,如有2个进程到达所标处,难道不会造成对应key的value值不是获取锁的进程①,而是并没有获取锁的进程2吗?currentValue.equals(value)不就导致进程①无法解锁吗
图片描述
②为什么删除命令为什么是 redisTemplate.opsForValue().getOperations().delete(key);而不使用redisTemplate.delete(key);呢?

写回答

1回答

廖师兄

2019-12-09

  1. 没看懂你的一个问题,你直接说这样写会造成什么问题,线程1和线程2分别在哪个置。

  2. redisTemplate.opsForValue().getOperations().delete(key)  和 redisTemplate.delete(key)是一样的


0
6
shouyaya
回复
无法显示sky
不会的,因为A,B只有在同一时间进来才会getAndSet() 所以他们的value是相等的,解锁的判定条件是正确的
2020-07-06
共6条回复

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

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

6410 学习 · 5247 问题

查看课程