1. 程式人生 > 其它 >Springboot中使用Redisson實現分散式鎖

Springboot中使用Redisson實現分散式鎖

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乾貨。