Redisson-入门

Redisson是架设在Redis基础上的一个Java驻内存数据网格

中文文档:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95

Hello World

pom添加依赖

1
2
3
4
5
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.16.4</version>
</dependency>

本地启动一个默认配置的redis客户端

编写一个controller测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@RestController
public class RedissonTest {

@Autowired
private RedissonClient redissonClient;

@RequestMapping("/redisson")
public String redissonTest(String xx) throws InterruptedException {
System.out.println(xx);
RLock rLock = redissonClient.getLock("aacopy");
rLock.lock();
System.out.println(xx);
Thread.sleep(10000);
rLock.unlock();
System.out.println(xx);
return xx;
}
}

使用浏览器访问地址,10秒内传入不同的参数,查看后台打印的顺序

2. 原理

2.1 watch dog

负责储存这个分布式锁的Redisson节点宕机以后,而且这个锁正好处于锁住的状态时,这个锁会出现锁死的状态。或者业务执行时间过长导致锁过期,

为了避免这种情况的发生,Redisson内部提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期。

Redisson中客户端一旦加锁成功,就会启动一个watch dog看门狗。watch dog是一个后台线程,会每隔10秒检查一下,如果客户端还持有锁key,那么就会不断的延长锁key的生存时间

默认情况下,看门狗的检查锁的超时时间是30秒钟,也可以通过修改Config.lockWatchdogTimeout来另行指定