(详细可用)分布式锁实现 Java + redis (一)
分布式环境下很多系统需要使用分布式锁 目的不多说了
redis实现分布式锁
1 | 复制代码官网描述: |
所以可以使用redis 实现分布式锁
另外:
1 | 复制代码看了网上许多的基于 redis 的分布式锁实现 , 大多都是用 |
优化解决方法 1. setNx 命令 进行加锁
1 | 复制代码不多说,就是 set if not exist |
- 无需使用线程休眠 + 轮训 key 的状态来判断
1 | 复制代码通过 redis 的 Redis Keyspace Notifications |
3.解决死锁
1 | 复制代码个人认为: |
上代码
执行资源竞争操作
1 | 复制代码 |
DistributedLocksService.java
1 | 复制代码 |
DistributedLock.java 抽象分布式锁接口
1 | 复制代码 |
redis 实现分布式锁 JedisDistributedLock.java
1 | 复制代码 |
线程模拟执行时间 ThreadHelper.java
1 | 复制代码 |
jedis 配置
spring-jedis.xml
1 | 复制代码 <context:property-placeholder location="classpath:jedis.properties" /> |
jedis.properties
1 | 复制代码standardalone.host=192.168.130.130 |
applicationContext.xml 中配置jedis 和 分布式锁的service
1 | 复制代码 |
附上项目源码:
github.com/zhuangjiese…
目录:
1 | 复制代码处理类: |
本文转载自: 掘金