分布式锁实现

转载 2016年08月30日 15:05:58

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


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

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

然后开始进行操作,

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

伪代码如下

[plain] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. if( INCR( 'EXCLUSION_COUNT' ) == 1 )  
  2. {  
  3.      EXPIRE(60) // set ttl for 1 minute  
  4.       
  5.      // DO some work  
  6.   
  7.      DEL( 'EXCLUSION_COUNT' )}  
  8. }  

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


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

[plain] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. if( INCR( 'EXCLUSION_COUNT' ) == 1 )  
  2. {  
  3.        
  4.   
  5.      for(...){  
  6.            EXPIRE(60) // set ttl for 1 minute  
  7.   
  8.             // DO some work  
  9.      }  
  10.   
  11.      DEL( 'EXCLUSION_COUNT' )  
  12. }  


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

zk使用curator实现分布式锁

  • 2017年09月20日 11:41
  • 2KB
  • 下载

一分钟实现分布式锁

  • 2017年03月01日 18:09
  • 314KB
  • 下载

Redis分布式锁实现原理 java版

Redis因为是单线程的,所以本身没有锁的概念。 所以分布式锁的实现原理是往Redis当中写入一个key(调用方法setnx),写入成功相当于获取锁成功。写入失败也即是setnx方法返回0,获取锁失败...

分布式锁-redis实现(2)

一、前言     对于前面的编写redis锁非常简单,也编写了测试用例,但是用起来是不是感觉毕竟麻烦。今天我们把redis锁,进一步小封装一下,用起来就只有几行代码了。对于没有看文章二的同学可能是个遗...

基于redis集群实现的分布式锁,可用于秒杀商品的库存数量管理,有测试代码(何志雄)

转载请标明出处。 在分布式系统中,经常会出现需要竞争同一资源的情况,本代码基于redis3.0.1+jedis2.7.1实现了分布式锁。 redis集群的搭建,请见我的另外一篇文章:《re...
  • tzszhzx
  • tzszhzx
  • 2015年06月04日 16:19
  • 4284

基于Redis实现简单的分布式锁

在分布式场景下,有很多种情况都需要实现最终一致性。在设计远程上下文的领域事件的时候,为了保证最终一致性,在通过领域事件进行通讯的方式中,可以共享存储(领域模型和消息的持久化数据源),或者做全局XA事务...

使用ZooKeeper实现Java跨JVM的分布式锁(优化构思)

说明:这篇文章是基于 使用ZooKeeper实现Java跨JVM的分布式锁 的,没有阅读的朋友请先阅读前面的文章后在阅读本文。 上一篇文章中介绍了如何使用分布式锁,并且对原来的公平锁进行了扩展,实现了...
  • nimasike
  • nimasike
  • 2016年06月03日 14:55
  • 10336

一种分布式锁的设计与实现

一种分布式锁的实现,基于分布式服务发现存储系统etcd
  • zspzwal
  • zspzwal
  • 2016年06月23日 19:08
  • 148

redis集群实现分布式锁

好久没写博客了,突然想起来以前看老外博客上redis做分布式锁的想法。 实现一个DLM(distributed lock manager)主要需要考虑一下几个问题: 1. lock server本身需...

利用redis(spring-data-redis)锁的功能来实现定时器的分布式

看到这样一篇文章如下: 以前为部门内部开发过一个定时器程序,这个定时器很简单,就是配置quartz,来实现定时调用配置的url功能。最近为了防止定时器所在的服务器由于特殊原因挂掉,需要对定时器做...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:分布式锁实现
举报原因:
原因补充:

(最多只允许输入30个字)