基于redis实现的分布式锁
2016-10-20 16:19
423 查看
基于redis实现的分布式锁
我们知道,在多线程环境中,锁是实现共享资源互斥访问的重要机制,以保证任何时刻只有一个线程在访问共享资源。锁的基本原理是:用一个状态值表示锁,对锁的占用和释放通过状态值来标识,因此基于redis实现的分布式锁主要依赖redis的SETNX命令和DEL命令,SETNX相当于上锁,DEL相当于释放锁,当然,在下面的具体实现中会更复杂些。之所以称为分布式锁,是因为客户端可以在redis集群环境中向集群中任一个可用Master节点请求上锁(即SETNX命令存储key到redis缓存中是随机的)。现在相信你已经对在基于redis实现的分布式锁的基本概念有了解,需要注意的是,这个和前面文章提到的使用WATCH 命令对key值进行锁操作没有直接的关系。java中synchronized和Lock对象都能对共享资源进行加锁,下面我们将学习用java实现的redis分布式锁。
java中的锁技术
在分析java实现的redis分布式锁之前,我们先来回顾下java中的锁技术,为了直观的展示,我们采用“多个线程共享输出设备”来举例。不加锁共享输出设备
从运行结果可以看出,三个线程打架了,线程1没打印完zhangsan,线程2就来抢输出设备......可见,这不是我们想要的,我们想要的是线程之间能有序的工作,各个线程之间互斥的使用输出设备output。
http://www.cnblogs.com/hjwublog/p/5749929.html https://my.oschina.net/91jason/blog/517996?p=1
相关文章推荐
- 基于Redis实现分布式消息队列(1)
- 基于redis集群实现的分布式锁,可用于秒杀商品的库存数量管理,有测试代码(何志雄)
- 基于Redis实现分布式锁-Redisson使用及源码分析
- 基于Redis实现分布式锁
- 基于Redis实现简单的分布式锁
- 基于Redis实现分布式消息队列(2)
- 基于Python,scrapy,redis的分布式爬虫实现框架
- 基于Redis实现分布式锁
- 基于Redis实现分布式锁以及任务队列
- 基于Redis实现分布式锁
- 基于Redis实现分布式消息队列(4)
- [转载] 基于Redis实现分布式消息队列
- 基于Redis实现分布式锁
- 基于Redis实现分布式锁,Redisson使用及源码分析
- 缓存篇~第七回 Redis实现基于方法签名的数据集缓存(可控更新,分布式数据缓存)
- 基于Redis实现分布式消息队列(汇总目录)
- 基于Redis Lua脚本实现的分布式锁 | 日拱一卒
- 基于Python,scrapy,redis的分布式爬虫实现框架
- 基于Redis实现分布式锁
- 基于Redis实现分布式锁,Redisson使用及源码分析