溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

分布式鎖 只需要一行注解,Mars-java框架

發(fā)布時(shí)間:2020-04-25 02:01:32 來(lái)源:網(wǎng)絡(luò) 閱讀:218 作者:wx5dd3a4c7ce05c 欄目:編程語(yǔ)言

在要加鎖的方法上添加RedisLock注解

@RedisLock(key = "自己定義一個(gè)key")
public int insert(){
  return 1;
}

這個(gè)鎖會(huì)在事務(wù)開啟之前獲取,在事務(wù)提交以后解鎖,并且只對(duì)MarsBean有效,對(duì)API和DAO無(wú)效

如果你不需要鎖住整個(gè)方法,只需要鎖一小段代碼,那么可以用下面的方式

在MarsBean里面注入MarsRedisLock對(duì)象

@MarsBean("testService")
public class TestService {

    @MarsWrite("marsRedisLock")
    private MarsRedisLock marsRedisLock;

}

加鎖

Boolean haslock = marsRedisLock.lock("自己定義一個(gè)key");
if(haslock){
    執(zhí)行加鎖后才能執(zhí)行的代碼
}

解鎖

marsRedisLock.unlock("加鎖的時(shí)候傳入的那個(gè)key");

詳細(xì)說(shuō)明

無(wú)論是用注解還是lock方法,如果沒(méi)有獲取到鎖,會(huì)等待20秒,20秒內(nèi)如果能獲取到鎖,則正常往下執(zhí)行,20秒內(nèi)沒(méi)獲取到鎖,則直接停止本次操作

lock方法 會(huì)返回true和false來(lái)表示有無(wú)獲取到鎖

鎖的有效時(shí)間為20秒,20秒以后會(huì)自動(dòng)解鎖

官網(wǎng)

http://mars-framework.com/

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI