老师,既然在get(lockey)的时候,lockvalueA已经超时了,怎么会出现lockvalueA==lockvalueB的情况呢
来源:13-1 Redis分布式锁原理解析
 
			清风杨
2018-03-30

写回答
	4回答
- 
				  Geely 2018-04-01 你好,亲爱的同学是这样的,因为setnx失败,所以这个key存在,这个时候去get。因为我们项目是要部署N多个tomcat,是一个多线程在操作这个分布式锁,确切的说每个tomcat进程都有进程在操作它。  然后就看这里,判断相等是在getset之后来判断的,getset的意义在课程里也有说过,所以并不是在说 get出来直接判断,这里还有一个getset流程哈 另外再补充一个其他同学碰到的思考的点。链接放在这里,供同学参考提高一下。 http://coding.imooc.com/learn/questiondetail/49161.html 
 00
- 
				  polo哦 2018-03-31 我觉得你的理解错了。。当前value和之前value不一样只能是有其他线程进行了锁的调用才会不一样,难道他的值还能自己变?setnx=0,存在这个key,然后呢?getset也是获得这个key的值,怎么没可能会一样?唯一不一样的原因就是这个锁被调用了,所以和原来的值不一样了 00
- 
				  polo哦 2018-03-30 同学~你如果值没有被线程改动过,那存在redis里面的值是不是原来那个值呢,那是不是不变呢 022018-03-30
- 
				  polo哦 2018-03-30 超时不代表值不存在,同样可以获取 022020-02-29
相似问题
 
						
