redisson鎖tryLock的正確使用方式
更新時(shí)間:2023年12月07日 10:07:28 作者:小螞蟻hjk
這篇文章主要介紹了redisson鎖tryLock的正確使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
redisson鎖tryLock的使用
方式一
RLock lock = redissonClient.getLock("Export:create:" + Context.get().getCorpId());
try {
if (lock.tryLock(5, 10, TimeUnit.SECONDS)) {
//業(yè)務(wù)處理
} else {
Assert.isTrue(false, "排隊(duì)中,請(qǐng)稍后重試!");
}
} catch (InterruptedException e) {
Assert.isTrue(false, "請(qǐng)勿重復(fù)操作!");
} finally {
if (lock.isLocked()) {
lock.unlock();
}
}方式二
RLock lock = redisson.getLock(String.format(REWARD_CARD_LOCK_KEY, 2));
try {
//嘗試加鎖,最多等待10秒,上鎖以后10秒自動(dòng)解鎖
if (lock.tryLock(10,10, TimeUnit.SECONDS)) {
try {
//處理
logger.info("tryLock thread---{}, lock:{}", Thread.currentThread().getId(), lock);
} catch (Exception e) {
} finally {
//解鎖
lock.unlock();
}
}
} catch (InterruptedException e) {
//處理
//保留中斷發(fā)生的證據(jù),以便調(diào)用棧中更高層的代碼能知道中斷,并對(duì)中斷作出響應(yīng) Thread.currentThread().interrupt();
}
public void testReentrantLock(RedissonClient redisson){
RLock lock = redisson.getLock("anyLock");
try{
// 1. 最常見的使用方法
//lock.lock();
// 2. 支持過期解鎖功能,10秒鐘以后自動(dòng)解鎖, 無需調(diào)用unlock方法手動(dòng)解鎖
//lock.lock(10, TimeUnit.SECONDS);
// 3. 嘗試加鎖,最多等待3秒,上鎖以后10秒自動(dòng)解鎖
boolean res = lock.tryLock(3, 10, TimeUnit.SECONDS);
if(res){ //成功
// do your business
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Redis Cluster Pipeline導(dǎo)致的死鎖問題解決
本文主要介紹了Redis Cluster Pipeline導(dǎo)致的死鎖問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10
從原理到實(shí)踐分析?Redis?分布式鎖的多種實(shí)現(xiàn)方案
在分布式系統(tǒng)中,為了保證多個(gè)進(jìn)程或線程之間的數(shù)據(jù)一致性和正確性,需要使用鎖來實(shí)現(xiàn)互斥訪問共享資源,然而,使用本地鎖在分布式系統(tǒng)中存在問題,這篇文章主要介紹了從原理到實(shí)踐分析?Redis?分布式鎖的多種實(shí)現(xiàn)方案,需要的朋友可以參考下2024-07-07
redis客戶端連接錯(cuò)誤 NOAUTH Authentication required
本文主要介紹了redis客戶端連接錯(cuò)誤 NOAUTH Authentication required,詳細(xì)的介紹了解決方法,感興趣的可以了解一下2021-07-07
mac下設(shè)置redis開機(jī)啟動(dòng)方法步驟
這篇文章主要介紹了mac下設(shè)置redis開機(jī)啟動(dòng),本文詳細(xì)的給出了操作步驟,需要的朋友可以參考下2015-07-07
基于Redis實(shí)現(xiàn)搶紅包和發(fā)紅包功能
搶紅包是我們生活常用的社交功能, 這個(gè)功能最主要的特點(diǎn)就是用戶的并發(fā)請(qǐng)求高, 在系統(tǒng)設(shè)計(jì)上, 可以使用非常多的辦法來扛住用戶的高并發(fā)請(qǐng)求, 在本文中簡(jiǎn)要介紹使用Redis緩存中間件來實(shí)現(xiàn)搶紅包算法,需要的朋友可以參考下2024-04-04
深入理解Redis 延遲監(jiān)控的項(xiàng)目實(shí)踐
本文主要介紹了Redis 延遲監(jiān)控,它通過事件鉤子記錄和存儲(chǔ)時(shí)間序列數(shù)據(jù),幫助用戶精確回放和分析延遲事件,具有一定的參考價(jià)值,感興趣的可以了解一下2025-11-11

