码迷,mamicode.com
首页 > 其他好文 > 详细

redis实现分布式锁

时间:2018-02-08 17:45:20      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:返回   time   没有   bsp   strong   否则   div   col   blog   

SETNX key value

key设置值为value,如果key不存在,这种情况下等同SET命令。 当key存在时,什么也不做。SETNX是”SET if Not eXists”的简写。

返回值

Integer reply, 特定值:

  • 1 如果key被设置了
  • 0 如果key没有被设置

##例子

redis> SETNX mykey "Hello"
(integer) 1
redis> SETNX mykey "World"
(integer) 0
redis> GET mykey
"Hello"
redis>

如果客户端获取锁成功,那么setnx返回1,否则返回0;
为防止出现死锁,需要SETNX 时设置有效时间,已防止迟持有锁的客户端崩溃时,无法释放锁,形如:
SETNX lock.foo <current Unix time + lock timeout + 1> 
为了使这种加锁算法更加的健壮,持有锁的客户端应该总是要检查是否超时,保证使用DEL释放锁之前不会过期,因为客户端故障的情况可能是复杂的,不止是崩溃,还会阻塞一段时间,阻止一些操作的执行,并且在阻塞恢复后尝试执行DEL(此时,该LOCK已经被其他客户端所持有)

redis实现分布式锁

标签:返回   time   没有   bsp   strong   否则   div   col   blog   

原文地址:https://www.cnblogs.com/yanwei-wang/p/8432079.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!