分佈式鎖 只需要一行註解,Mars-java框架

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

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

這個鎖會在事務開啓之前獲取,在事務提交以後解鎖,並且只對MarsBean有效,對API和DAO無效

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

在MarsBean裏面注入MarsRedisLock對象

@MarsBean("testService")
public class TestService {

    @MarsWrite("marsRedisLock")
    private MarsRedisLock marsRedisLock;

}

加鎖

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

解鎖

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

詳細說明

無論是用註解還是lock方法,如果沒有獲取到鎖,會等待20秒,20秒內如果能獲取到鎖,則正常往下執行,20秒內沒獲取到鎖,則直接停止本次操作

lock方法 會返回true和false來表示有無獲取到鎖

鎖的有效時間爲20秒,20秒以後會自動解鎖

官網

http://mars-framework.com/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章