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

    分布式锁的缘由

    我们都知道 可以通过redis setnx 上锁占坑 防止并发

    >setnx lock:code true

    ok 

    ...do something

    >del lock:code

    但是如果执行逻辑出现异常可能导致死锁,这时我们就会考虑增加过期时间

    >setnx lock:code true

    ok 

    >expire lock:code 5

    ...do something

    >del lock:code

    但是服务器突然挂掉 还是会导致死锁的问题,因为这两条命令不是原子执行

    也许这时你会想到redis事务,但是我们是根据抢到锁才去设置过期时间,没抢到是不执行expire的 ,但是事务是没有if else的

    为了解决这个问题,redis2.8之后 加入set扩展参数 可以让setnx 和 expire一起执行

    >set lock:code true ex 5 nx

    ok

    ....do something

    >del lock:code

  • 相关阅读:
    HTML简单的用户资料
    PhP CSS常用选择器
    PHPCSS样式表
    PHP第四日随笔
    一些记不住的东西
    错误记录
    关于空想X
    DSA 祖玛
    洛谷 P1194 买礼物
    Git笔记
  • 原文地址:https://www.cnblogs.com/-cyh/p/14586815.html
Copyright © 2011-2022 走看看