当前位置:首页 > 开发 > 互联网 > 正文

使用redis实现分布式锁

发表于: 2015-06-26   作者:qifeifei   来源:转载   浏览:
摘要: 在多节点的系统中,如何实现分布式锁机制,其中用redis来实现是很好的方法之一,我们先来看一下jedis包中,有个类名BinaryJedis,它有个方法如下:   public Long setnx(final byte[] key, final byte[] value) { checkIsInMulti(); client.setnx(key, value); ret

在多节点的系统中,如何实现分布式锁机制,其中用redis来实现是很好的方法之一,我们先来看一下jedis包中,有个类名BinaryJedis,它有个方法如下:

 

public Long setnx(final byte[] key, final byte[] value) {
	checkIsInMulti();
	client.setnx(key, value);
	return client.getIntegerReply();
    }

 

它的意思是,设置这个key和value,前提是当前key不存在的情况下,还有一个重要前提,不存在多线程共享一个client,如果设置成功,结果会返回1,如果没有设置成功,结果返回0。

 

重点关注的地方是client.setnx(key,value), 到redis 的server端实现方法是原语,主要是充分利用到这一点来实现锁机制的,非常巧妙。

 

实现方式除了redis外还有很多的,例如zookeeper,数据库(充分使用事务的隔离机制来实现)等等,可以补充。

 

使用redis实现分布式锁

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
背景 在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部
转载:基于Redis实现分布式锁 ,出处: http://blog.csdn.net/ugg/article/details/41894947 背景 在
背景 在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部
from:http://blog.csdn.net/ugg/article/details/41894947 背景 在很多互联网产品应用中,有些场景
大家也许都很熟悉了多个线程或者多个进程间的共享锁的实现方式了,但是在分布式场景中我们会面临多
阅读目录: 概述 分布式锁 多实例分布式锁 总结 概述 在多线程环境下,通常会使用锁来保证有且只有
http://www.cnblogs.com/mushroom/p/4752499.html 阅读目录: 概述 分布式锁 多实例分布式锁 总结
agapple 基于zookeeper的分布式lock实现 博客分类: opensource java distributed 背景 继续上一篇
  上一篇介绍了一些redis的安装及使用步骤,本篇开始将介绍redis的实际应用场景,先从最常见的sess
  上一篇介绍了如何使用nginx+iis部署一个简单的分布式系统,文章结尾留下了几个问题,其中一个是
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号