通过Redisson实现基于redis的分布式锁
2017-11-14 15:46
691 查看
除了上一篇写的基于Jedis利用redis的setnx函数实现分布式锁之外。redis官方推荐使用Redisson作为分布式锁的首选。使用Redisson,不需要自己去封装lock和unlock方法。只需引入pom文件,加入相关调用方法即可。
1.pom文件
2.java代码调用
1.pom文件
<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.3.2</version> </dependency>
2.java代码调用
import org.redisson.Redisson; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import java.util.Date; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class RedissonTest { public static void main(String[] args) { //Redisson连接配置文件 Config config = new Config(); config. useSingleServer().setAddress("127.0.0.1:6379"); RedissonClient redisson = Redisson.create(config); RLock yuxinLock = redisson.getLock("yuxinLock"); // 1.获得锁对象实例 new RedissonTest().testM(yuxinLock); } public void testM(RLock yuxinLock){ ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5); for(int i = 0; i < 5; i++){ fixedThreadPool.execute(new Task("woker_" + i,yuxinLock)); } } class Task implements Runnable{ private String name; private RLock yuxinLock; public Task(String name,RLock yuxinLock){ this.name = name; this.yuxinLock=yuxinLock; System.out.println(name); } public void run() { boolean res=false; try{ System.out.println(name+"开始夺锁大战"); //1.不支持过期自动解锁,不会超时 //yuxinLock.lock(); // 2. 支持过期解锁功能,10秒钟以后自动解锁, 无需调用unlock方法手动解锁 //lock.lock(10, TimeUnit.SECONDS); // 3. 尝试加锁,最多等待20秒,上锁以后10秒自动解锁(实际项目中推荐这种,以防出现死锁) res = yuxinLock.tryLock(20, 10, TimeUnit.SECONDS); if(res){ System.out.println(this.name + "开始工作了"+new Date()); int time = 5000; if(time > 0){ Thread.sleep(time); } System.out.println(this.name + "结束工作了;" + new Date()); }else{ System.out.println(name+"等待超时"); } } catch (InterruptedException e) { e.printStackTrace(); } finally{ if(res){ yuxinLock.unlock(); } } } } }
相关文章推荐
- 基于Redis实现分布式锁,Redisson使用及源码分析
- Redis分布式锁 基于GETSET SETNX REDISSON 的实现
- 基于Redis实现分布式锁,Redisson使用及源码分析
- 基于Redis实现分布式锁,Redisson使用及源码分析
- 基于Redis实现分布式锁-Redisson使用及源码分析
- 基于Redis实现分布式锁,Redisson使用及源码分析
- 基于Redis实现分布式锁,Redisson使用及源码分析
- 基于Redis实现分布式锁
- 基于redis实现可靠的分布式锁
- 基于 Redis 的分布式缓存实现方案及可靠性加固策略
- 分布式锁与实现(一)——基于Redis实现
- 分布式架构下的会话追踪实践【基于Cookie和Redis实现】
- 基于Redis实现分布式锁
- 基于nutcracker 的redis分布式缓存的实现的注意
- 基于redis的分布式锁服务实现
- 基于Python,scrapy,redis的分布式爬虫实现框架
- Java基于Redis实现分布式锁
- Java 实现基于Redis的分布式可重入锁
- 分布式锁 分段锁 基于 memcached redis zookeeper (3种资源模式) 实现
- 分布式锁实现方案2、基于Redis的SET操作实现的分布式锁