高可用的redis分布式鎖

2021-10-04 15:31:35 字數 1050 閱讀 5666

1:乙個分布式鎖具備哪些條件

1:互斥性:只能有乙個執行緒可以獲取到鎖

2:鎖超時:在超過規定時間自動釋放鎖,防止死鎖

3:支援阻塞和非阻塞:在一次沒有獲取鎖的時候回重複嘗試獲得鎖,而不是直接返回失敗

4:可重入性:在乙個鎖中可以再去獲得鎖

5:高可用: 在超過我們設定的鎖過期的時間,但是我們的執行緒還沒有執行完操作,還沒有釋放鎖,就被過期釋放了。所以要提供

可以自動續期的機制

具體見**,**中有注釋

public class redislock  catch (interruptedexception e) }}

});addthread.start();

string uuid = addthread.getid() +":"+ uuid.randomuuid().tostring();

threadlocal.set(uuid);

//在redis中插入一條key 超時時間為30s 把新增過期時間的執行緒id也作為key 後面我們通過id 在釋放鎖的時候停止該執行緒

boolean islock = stringredistemplate.opsforvalue().setifabsent(key, uuid, timeout, unit);

//支援阻塞性 獲取鎖失敗 重複去獲取鎖

if (!islock) }}

return islock;

} else

}/**

* 解鎖

*/public boolean release(string key)

return null;

}/**

* 通過執行緒id獲得執行緒

** @param threadid

* @return

*/public static thread findthread(long threadid)

}group = group.getparent();

}return null;

}}

Redis高併發分布式鎖詳解

乙個可靠的分布式鎖應該具備以下特性 互斥性 作為鎖,需要保證任何時刻只能有乙個客戶端 使用者 持有鎖 可重入 同乙個客戶端在獲得鎖後,可以再次進行加鎖 高可用 獲取鎖和釋放鎖的效率較高,不會出現單點故障 自動重試機制 當客戶端加鎖失敗時,能夠提供一種機制讓客戶端自動重試 加了synchronized...

分布式架構 高可用

本文將通過自建架構圖 進行講解 如圖採用了分布式 微服務架構,將傳統系統進行重構後的效果 微服務架構體系對多個層面進行探索 分析和優化,本文不在詳細闡述 微服務 分布式架構根據公司 企業需求定製化構造而來,目的細化模組間的呼叫,鏈路更加清晰明了,不同環節高可用方案不同,優化手段也存在差異。分析思考 ...

redis分布式鎖

redis分布式鎖 直接上 我寫了四個redis分布式鎖的方法,大家可以提個意見 第一種方法 redis分布式鎖 param timeout public void lock long timeout thread.sleep 100 catch exception e override publi...