Redis实现分布式全局锁

本文地址:http://blog.csdn.net/wangjia184/article/details/20642331


利用Redis实现多服务器多进程环境下的分布式全局锁


首先调用 INCR 并检测返回值,如果等于1就表示获得了锁

然后EXPIRE设置此Key的过期时间,

然后开始进行操作,

当操作完成后DEL删除这个KEY

伪代码如下

if( INCR( 'EXCLUSION_COUNT' ) == 1 )
{
     EXPIRE(60) // set ttl for 1 minute
    
     // DO some work

     DEL( 'EXCLUSION_COUNT' )}
}

这里的 EXPIRE(60) 表示我们假定接下来的操作一定会在1分钟内完成。需要根据实际情况调整这个值.
如果当前获得了锁的进程或者机器在执行过程中崩溃了,其它进程或者机器也能在1分钟后重新获得锁执行。


如果处理的过程是一个不确定执行时间的过程,可以每隔一段时间renew一下这个KEY, 比如

if( INCR( 'EXCLUSION_COUNT' ) == 1 )
{
     

     for(...){
           EXPIRE(60) // set ttl for 1 minute

            // DO some work
     }

     DEL( 'EXCLUSION_COUNT' )
}



  • 0
    点赞
  • 3
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页

打赏

CodeProject-Jerry

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者