zoukankan      html  css  js  c++  java
  • redis实现分布式锁

    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已经被其他客户端所持有)
  • 相关阅读:
    好友面板切换案例
    jquery
    H5 新增API
    深拷贝
    浅拷贝
    call bind apply
    像素鸟
    Django3.0
    三剑客-grep-awk-sed
    Linux中find命令详解
  • 原文地址:https://www.cnblogs.com/yanwei-wang/p/8432079.html
Copyright © 2011-2022 走看看