在要加鎖的方法上添加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秒以後會自動解鎖