采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
setnx命令的expire设置过期时间和设置锁不是原子操作,set可以进行原子操作,请问为什么不用set呢?
同学,因为使用set的话,是没法判断当前key是否存在的,setnx的语意就是SET if Not exists,不存在就set,使用set是没法避免这个判断前提的,这样的话,就会存在一个并发问题,导致的问题更多。setnx虽然设置过期时间没发做到原子操作,但是咱们可以把过期时间作为value,这样就可以不需要expire,通过对比value和当前时间就可以判断是否过期。
老师好 关于V1版分布式锁的改进,因为官方redis 2.6.12之后,set命令增加支持了 EX PX NX XX参数: SET key value [EX seconds|PX milliseconds] [NX|XX],而这个命令是原子性的,也能通过这个命令 改进的吧
登录后可查看更多问答,登录/注册
Tomcat集群+Redis分布式+代码重构+源码原理解析
1.6k 17
2.5k 12
1.6k 12
1.6k 11
1.9k 10