redisson分佈式鎖的用法大全

Redisson是Redis官方推薦的Java版的Redis客戶端。它提供的功能非常多,此處我們隻用它的分佈式鎖功能。

以springboot整合Redisson項目為例

添加springboot maven依賴

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

配置 redisson就不細講瞭,咱們這邊用默認配置,什麼都不用配
編寫測試代碼

package com.miyou;

import org.junit.jupiter.api.Test;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.concurrent.locks.Lock;

public class DefaultTest extends UserRightsApplicationTests {


  @Autowired
  private RedissonClient redissonClient;

  @Test
  public void testLock() throws InterruptedException {
    Lock lock = redissonClient.getLock("test lock");
    lock.lock();
    System.out.println("鎖獲取成功");
    new Thread(()->{
      Lock rLock2 = redissonClient.getLock("test lock");
      rLock2.lock();
      System.out.println("線程2獲取鎖成功!");
      rLock2.unlock();
    }).start();
    Thread.sleep(20000);
    System.out.println("主線程釋放鎖");
    lock.unlock();
    Thread.sleep(1200000);
  }
}

默認情況下redisson分佈式鎖的超時時間為30秒,在鎖即將超時的情況下redisson會檢查拿到鎖的線程id是否存活,如果線程存活redisson會對超時時間進行續期

redissonClient.getLock方法返回的接口類型為
org.redisson.api.RLock
查看源碼,可以看到RLock繼承瞭java.util.concurrent.locks.Lock接口

在這裡插入圖片描述

可以無縫對接使用Lock的業務場景,實現設計和傳遞

到此這篇關於redisson分佈式鎖的用法大全的文章就介紹到這瞭,更多相關redisson分佈式鎖內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: