关于redisson的源代码请参考官网:https://github.com/redisson/redisson redisson官方讲解参考:https://github.com/redisson/redisson/wiki/目录
首先需要引入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.-配置方法,这里只演示集群环境。
@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.-分布式锁和同步器
就这样通过redisson就实现redis分布式锁,内部帮我们解决了上一篇提到的注意的地方。使用redisson更加体现一切皆对象,我们不需要知道内部如何实现,只需知道如何使用就行。当然作为一个积极进取的程序员还是要了解底层实现的。
无意看到一篇博客,分析的很好 请参考:http://www.jianshu.com/p/de5a69622e49