Redisson分散式鎖

zhaozhangxiao發表於2022-07-05

可參考:www.it610.com/article/152985037452...
1、Redisson簡介
Redis 是最流行的 NoSQL 資料庫解決方案之一,而 Java 是世界上最流行(注意,沒有說“最好”)的程式語言之一。雖然兩者看起來很自然地在一起“工作”,但是要知道,Redis 其實並沒有對 Java 提供原生支援。
相反,作為 Java 開發人員,我們若想在程式中整合 Redis,必須使用 Redis 的第三方庫。而 Redisson 就是用於在 Java 程式中操作 Redis 的庫,它使得我們可以在程式中輕鬆地使用 Redis。Redisson 在 java.util 中常用介面的基礎上,為我們提供了一系列具有分散式特性的工具類。
Redisson底層採用的是Netty 框架。支援Redis 2.8以上版本,支援Java1.6+以上版本。
2、Redisson實現分散式鎖的步驟
2.1.引入依賴
SpringBoot整合Redisson有個比較好用的starter包就是redisson-spring-boot-starter,這也是官方比較推薦的配置方式

引入redisson依賴

只需引入redisson-spring-boot-starter就可以了,不過這裡需要注意springboot與redisson的版本,因為官方推薦redisson版本與springboot版本配合使用。版本不匹配會導致這種問題。

將 Redisson 與 Spring Boot 庫整合。取決於Spring Data Redis模組,支援 Spring Boot 1.3.x - 2.4.x

這句話是官方說的,不過現在的2.5.x也是支援的,只需要注意springboot最低版本不要低於1.3.x即可。

redisson-spring-data與Spring Boot version的版本對應關係

redisson-spring-data module name Spring Boot version
redisson-spring-data-16 1.3.x
redisson-spring-data-17 1.4.x
redisson-spring-data-18 1.5.x
redisson-spring-data-20 2.0.x
redisson-spring-data-21 2.1.x
redisson-spring-data-22 2.2.x
redisson-spring-data-23 2.3.x
redisson-spring-data-24 2.4.x

maven依賴


            org.redisson
            redisson-spring-boot-starter
            3.17.1

點選redisson-spring-boot-starter進去

Redisson分散式鎖

Redisson分散式鎖

Redisson分散式鎖

public class IndexController {
    @Autowired(required = false)
    private RedissonClient redissonClient;

    @GetMapping("/index")
    public String index() {
        RLock tokenLock = redissonClient.getLock("tokenLock");
        RBucket<String> name = redissonClient.getBucket("name");
        name.set("zhangxiao");

        tokenLock.lock();
        try {
            System.out.println("獲取鎖");
            Thread.sleep(20000);
            System.out.println("加鎖成功,程式碼執行緒:" + Thread.currentThread().getName());
        } catch (Exception ex) {
            System.out.println("異常報錯");
        } finally {
            tokenLock.unlock();
        }
        return "redisson is ok";
    }
}

Redisson分散式鎖

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章