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會對超時時間進行續(xù)期
redissonClient.getLock方法返回的接口類型為
org.redisson.api.RLock
查看源碼,可以看到RLock繼承了java.util.concurrent.locks.Lock接口

可以無縫對接使用Lock的業(yè)務場景,實現(xiàn)設計和傳遞
到此這篇關于redisson分布式鎖的用法大全的文章就介紹到這了,更多相關redisson分布式鎖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Redis:Redisson分布式鎖的使用方式(推薦使用)
- Java使用Redisson分布式鎖實現(xiàn)原理
- redis和redisson實現(xiàn)分布式鎖的操作方法
- Redisson如何解決redis分布式鎖過期時間到了業(yè)務沒執(zhí)行完問題
- redis分布式鎖RedissonLock的實現(xiàn)細節(jié)解析
- Java redisson實現(xiàn)分布式鎖原理詳解
- Redisson如何解決Redis分布式鎖提前釋放問題
- Redis集群利用Redisson實現(xiàn)分布式鎖方式
- 基于Redis分布式鎖Redisson及SpringBoot集成Redisson
- Java實現(xiàn)Redisson分布式鎖的10大陷阱與避坑指南
相關文章
解決mybatis resultMap根據(jù)type找不到對應的包問題
這篇文章主要介紹了解決mybatis resultMap根據(jù)type找不到對應的包問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
springboot+chatgpt+chatUI Pro開發(fā)智能聊天工具的實踐
本文主要介紹了springboot+chatgpt+chatUI Pro開發(fā)智能聊天工具的實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-04-04

