redis分布式鎖redisson


原文: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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM