关闭

分布式锁实现

199人阅读 评论(0) 收藏 举报

利用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. }  



0
0
查看评论

如何实现分布式锁?

转载请注明:http://blog.csdn.net/HEL_WOR/article/details/51661591 有一个计算流量的逻辑,需要每隔一段时间将单机中的流量缓存同步到Redis库中,现在就出现了这个问题,一个服务被部署到多服务器上,当需要同时写同一台redis数据库,就需要使用分布式...
  • HEL_WOR
  • HEL_WOR
  • 2016-06-14 00:26
  • 1068

基于zookeeper实现分布式锁

前言:2016春节之后一直比较忙,因此博客N个没有更新,现在也是忙里偷闲,偷偷的更新一篇! 一、分布式锁介绍         分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的...
  • sunfeizhi
  • sunfeizhi
  • 2016-07-16 21:24
  • 44660

利用多写Redis实现分布式锁原理与实现分析

在我写这篇文章的时候,其实我还是挺纠结的,因为我这个方案本身也是雕虫小技拿出来显眼肯定会被贻笑大方,但是我最终还是拿出来与大家分享,我本着学习的态度和精神,希望大家能够给与我指导和改进方案。 一、关于分布式锁 关于分布式锁,可能绝大部分人都会或多或少涉及到。 我举二个例子: 场景一:从前端界...
  • u013970991
  • u013970991
  • 2016-10-02 08:26
  • 20679

分布式锁方式(一、基于数据库的分布式锁)

写在前面: 分布式部署,分布式锁。每个人都有自己的理解和认识,网上查阅了很多资料,整理一份比较全的关于分布式锁相关的资料,本文非原创只是不同文章的整理和理解,文章最后我会把资料来源摘出。 --------------------------------------------------------...
  • tianjiabin123
  • tianjiabin123
  • 2017-05-22 11:52
  • 1966

curator实现zookeeper的分布式锁

基于curator元语实现的分布式锁种类有好几种,下面只讲解一种实现 public class DistributeLock { private static final String PATH = “/example/cache”; private static fi...
  • pengshuai128
  • pengshuai128
  • 2017-04-24 12:59
  • 2572

分布式锁实现方式三 基干Memcache mutex设计模式

分布式锁实现方式三 Memcache mutex设计模式 应用场景 上周六去参加了csdn举办的TUP活动,最后一场的Tim Yang讲的《微博cache设计谈》,个人觉得讲得非常好和非常到位,其中有两点非常感同身受,就是内网流量问题和cache的key mutex问题导致大量请求穿透到db。后他...
  • huwei2003
  • huwei2003
  • 2017-01-20 17:08
  • 617

分布式锁的两种实现方式

由于项目中遇到,所以今天讲讲分布式锁的两种实现方式。一种利用数据库锁实现,一种利用redis的单线程机制实现。 一个项目中可以同时实现两种方式。在配置文件控制使用哪一种方式,方便当一种方式出现异常时切换到另外一种方式。 分布式锁使用场景:       &#...
  • heweimingming
  • heweimingming
  • 2016-07-15 13:53
  • 1662

分布式锁的几种实现方式

转自:http://www.hollischuang.com/archives/1716 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Av...
  • zdy0_2004
  • zdy0_2004
  • 2016-11-07 20:20
  • 6475

架构师日记——基于redis的分布式锁实现

很久之前有讲过并发编程中的锁 并发编程的锁机制:synchronized和lock 。在单进程的系统中,当存在多个线程可以同时改变某个变量时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有...
  • qq_32198277
  • qq_32198277
  • 2018-01-06 13:45
  • 123

java实现分布式锁

分布式锁? 答:控制分布式系统同步访问共享资源。 (1)基于数据库实现 当要锁住某个方法或资源时,在表中增加一条记录,释放锁时删除这条记录。 问题:1.锁是非重入的,同一个线程在没有释放锁之前不能再次获得该锁,因为数据       ...
  • gaibian_one
  • gaibian_one
  • 2017-09-13 08:38
  • 258
    个人资料
    • 访问:145616次
    • 积分:1717
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:197篇
    • 译文:0篇
    • 评论:10条
    最新评论