官网:https://redisson.org/
官方文档:https://redisson.org/docs/getting-started/
官方中文文档:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95
1、引入依赖
<!--redisson-->
<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version>
</dependency>
2、配置Redisson客户端
(1)程序化配置方法
参考官网:
@Configuration
public class RedissonConfig {@Beanpublic RedissonClient redissonClient(){// 配置Config config = new Config();// 如果是集群使用config.useClusterServers().setAddress()config.useSingleServer().setAddress("redis://192.168.75.101:6379").setPassword("123321");// 创建RedissonClient对象return Redisson.create(config);}
}
(2)文件方式配置
当然也可以如果yml的方式进行配置,参考官方文档如下:https://github.com/redisson/redisson/wiki/2.-%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95#22-%E6%96%87%E4%BB%B6%E6%96%B9%E5%BC%8F%E9%85%8D%E7%BD%AE
还有一些配置详细信息:
这里我们使用程序化配置方式 !
3、简单使用Redisson的分布式锁
这里讲可重入锁:
参考:8. 分布式锁和同步器 · redisson/redisson Wiki · GitHub
@Resource
private RedissionClient redissonClient;@Test
void testRedisson() throws Exception{//获取锁(可重入),指定锁的名称RLock lock = redissonClient.getLock("myLock");//尝试获取锁,参数分别是:获取锁的最大等待时间(期间会重试),锁自动释放时间,时间单位boolean isLock = lock.tryLock(1,10,TimeUnit.SECONDS);//判断获取锁成功if(isLock){try{System.out.println("执行业务"); }finally{//释放锁lock.unlock();}}
}
Redisson内部提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期。默认情况下,看门狗的检查锁的超时时间是30秒钟
剩余其余锁可以参考官方文档。
4、分布式锁原理
Redisson分布式锁原理:
•可重入:利用hash结构记录线程id和重入次数
•可重试:利用信号量和PubSub功能实现等待、唤醒,获取锁失败的重试机制
•超时续约:利用watchDog机制,开启一个定时任务,每隔一段时间(releaseTime / 3),重置超时时间