SETNX lock.foo <current Unix time + lock timeout + 1> 这一段设置超时时间一直不能理解, 如果我的程序在特殊情况下无法在超时时间内就被其他实例获取到锁了。
1
andyzhshg 2017-12-19 11:43:48 +08:00
这么设置不就是为了能在超时的时候让别的实例获取到锁么。。。不想让别的实例获取到就不设超时就好了,代价就是可能会出现死锁。
|
2
picone 2017-12-19 12:53:59 +08:00
1.这种锁很依赖时间,有可能是机器间的日期不同步。
2.超时获取锁的时候建议做 double check。 |
3
kier 2017-12-19 12:58:58 +08:00 1
|
4
biaoliruyi OP value 设置为超时时间来解决死锁我能理解。
举个例子 我有一段业务代码是向 oss 服务上传文件当业务出现峰值时服务器的带宽被消耗完了的时候会出现业务没走完但是锁的时间已经到的情况,这样无法保证业务的原子性了。 @andyzhshg |