原文:https://blog.csdn.net/Kincym/article/details/78697472
关于redisson的源代码请参考官网:https://github.com/redisson/redisson
redisson官方讲解参考:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95
springBoot中实现
首先需要引入redisson
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--redis分布式锁-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.4.3</version>
</dependency>
生成Redisson的bean
支持单机,主从,哨兵,集群等模式,具体方式请参考https://github.com/redisson/redisson/wiki/2.-%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95,这里只演示集群环境。
@Bean
Redisson redissonSentinel() {
Config config = new Config();
config.useClusterServers()
.setScanInterval(2000) // 集群状态扫描间隔时间,单位是毫秒
//可以用"rediss://"来启用SSL连接
.addNodeAddress("redis://10.82.0.102:7000")
.addNodeAddress("redis://10.82.0.102:7001")
.addNodeAddress("redis://10.82.0.102:7002")
.addNodeAddress("redis://10.82.0.102:7003")
.addNodeAddress("redis://10.82.0.102:7004")
.addNodeAddress("redis://10.82.0.102:7005");
return (Redisson)Redisson.create(config);
}
这里只是简单展示,配置更加详细的,参考上面网站。
简单使用实现:
@Autowired
Redisson redisson;
RLock lock = redisson.getLock(key);
lock.lock(60, TimeUnit.SECONDS); //设置60秒自动释放锁 (默认是30秒自动过期)
//执行的业务代码
lock.unlock(); //释放锁
关于Redisson 更加全面详细锁的情况,前往:https://github.com/redisson/redisson/wiki/8.-%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E5%92%8C%E5%90%8C%E6%AD%A5%E5%99%A8
就这样通过redisson就实现redis分布式锁,内部帮我们解决了上一篇提到的注意的地方。使用redisson更加体现一切皆对象,我们不需要知道内部如何实现,只需知道如何使用就行。当然作为一个积极进取的程序员还是要了解底层实现的。
原理简介
无意看到一篇博客,分析的很好
请参考:http://www.jianshu.com/p/de5a69622e49
原文地址:https://www.cnblogs.com/shihaiming/p/9547689.html
时间: 2024-10-04 06:40:57