1. 配置
1.1. Maven 依赖
1 2 3 4 5
| <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.13.4</version> </dependency>
|
1.2. Spring 配置
1 2 3
| redisson: singleServerConfig: address: 127:0:0:1:6379
|
2. 源码
3. tryLock 原理
org.redisson.RedissonLock#tryLock(long, long, java.util.concurrent.TimeUnit)
- 先尝试获取一次, 如果成功, 则返回; 如果超时则, 失败; 否则继续下一步
- 根据第一次尝试获取锁的时长作为超时时间, 订阅锁队列, 看在一个时长内是否可以收到解锁消息, 如果不能等到, 则获取锁失败; 付过能等到, 则继续下一步
- 判断是否超时, 如果没有则继续下一步
- 通过信号量的
boolean tryAcquire(long timeout, TimeUnit unit) 循环递归获取锁
- finally 取消订阅
4. Resource