【原创】redis库存操作,分布式锁的四种实现方式[连载二]--基于Redisson实现分布式锁

 一、redisson介绍

redisson实现了分布式和可扩展的java数据结构,支持的数据结构有:List, Set, Map, Queue, SortedSet, ConcureentMap, Lock, AtomicLong, CountDownLatch。并且是线程安全的,底层使用Netty 4实现网络通信。和jedis相比,功能比较简单,不支持排序,事务,管道,分区等redis特性,可以认为是jedis的补充,不能替换jedis。

二、redisson几种锁介绍

1、可重入锁(Reentrant Lock)

基于Redis的Redisson分布式可重入锁

1 RLock lock = redisson.getLock("anyLock"); 2 // 最常见的使用方法3 lock.lock();
复制代码

另外Redisson还通过加锁的方法提供了leaseTime的参数来指定加锁的时间。超过这个时间后锁便自动解开了。

复制代码
1 // 加锁以后10秒钟自动解锁 2 // 无需调用unlock方法手动解锁3 lock.lock(10, TimeUnit.SECONDS); 4 5 // 尝试加锁,最多等待100秒,上锁以后10秒自动解锁6 boolean res = lock.tryLock(100, 10, TimeUnit.SECONDS); 7 ... 8 lock.unlock();
复制代码

Redisson同时还为分布式锁提供了异步执行的相关方法:

复制代码
1 RLock lock = redisson.getLock("anyLock"); 2 lock.lockAsync(); 3 lock.lockAsync(10, TimeUnit.SECONDS); 4 Future<Boolean> res = lock.tryLockAsync(100, 10, TimeUnit.SECONDS);
复制代码

2.公平锁(Fair Lock)

基于Redis的Redisson分布式可重入公平锁也是实现了java.util.concurrent.locks.Lock接口的一种RLock对象。它保证了当多个Redisson客户端线程同时请求加锁时,优先分配给先发出请求的线程。

复制代码
1 RLock fairLock = 
                    
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信