采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
你好,亲爱的同学是这样的,因为setnx失败,所以这个key存在,这个时候去get。因为我们项目是要部署N多个tomcat,是一个多线程在操作这个分布式锁,确切的说每个tomcat进程都有进程在操作它。
然后就看这里,判断相等是在getset之后来判断的,getset的意义在课程里也有说过,所以并不是在说 get出来直接判断,这里还有一个getset流程哈
另外再补充一个其他同学碰到的思考的点。链接放在这里,供同学参考提高一下。
http://coding.imooc.com/learn/questiondetail/49161.html
我觉得你的理解错了。。当前value和之前value不一样只能是有其他线程进行了锁的调用才会不一样,难道他的值还能自己变?setnx=0,存在这个key,然后呢?getset也是获得这个key的值,怎么没可能会一样?唯一不一样的原因就是这个锁被调用了,所以和原来的值不一样了
同学~你如果值没有被线程改动过,那存在redis里面的值是不是原来那个值呢,那是不是不变呢
Getset的value是当前的value,而之前的value和现在的value会有时间差啊
既然setnx是false,说明已经存在这个key,你再去getset,存入的value可能一样吗?
超时不代表值不存在,同样可以获取
那当前的时间和之前的时间也不一样啊
你弄明白了
登录后可查看更多问答,登录/注册
Tomcat集群+Redis分布式+代码重构+源码原理解析
2.0k 17
3.0k 12
2.0k 12
2.0k 11
2.3k 10
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号