Springboot中使用Redisson實現分散式鎖

追風人聊Java發表於2021-10-10

1. 概述

老話說的好:便宜沒好貨,有價值的商品,即使再貴,也有人會買。

 

言歸正傳,今天繼續討論有關“鎖”的話題,synchronized 和 ReentrantLock 大家應該都非常熟悉了,但這兩個鎖,作用域僅限制於單個Tomcat,如果使用了 Tomcat 叢集,這兩個鎖就不管用了。

此時我們就要引入分散式鎖了,分散式鎖的實現方式有很多,可以使用 Mysql 資料庫實現,也可以使用 Zookeeper 實現,當然比較常用的還是使用 Redis 實現。

今天我們就來聊一下基於 Redis 的實現方式 —— Redisson。

 

2. Redisson 在 Springboot 中的使用

2.1 引入依賴

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>3.16.3</version>
</dependency>

 

2.2 在 Springboot 配置中配置Redis

支援 Redis單體、Redis哨兵模式 和 Redis叢集模式

spring:
  redis:
    host: 192.168.1.12
    port: 6379
    password: zhuifengren

 

2.3 Demo程式碼

    @Autowired
    private RedissonClient redissonClient;

    public void lock() {

        RLock rLock = redissonClient.getLock("myLock");
        log.info("進入了方法");

        try {
            // 加鎖,30秒後自動釋放鎖
            rLock.lock(30, TimeUnit.SECONDS);
            log.info("獲得了鎖");

            Thread.sleep(15000);

        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
        } finally {
            // 釋放鎖
            rLock.unlock();
            log.info("釋放了鎖");
        }
    }

 

3. 綜述

今天聊了一下 Springboot中使用Redisson實現分散式鎖,希望可以對大家的工作有所幫助。

歡迎幫忙點贊、評論、轉發、加關注 :)

關注追風人聊Java,每天更新Java乾貨。

 

相關文章