日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Redis讀寫實(shí)現(xiàn)可靠加鎖(redis讀寫加鎖)

隨著近年來,分布式應(yīng)用變得越來越普遍,集群服務(wù)的高可用是系統(tǒng)設(shè)計(jì)的重點(diǎn)。對于分布式事務(wù),其中重要組成部分就是實(shí)現(xiàn)可靠加鎖。Redis 作為一款強(qiáng)大的數(shù)據(jù)庫鍵值存儲(chǔ)系統(tǒng),它提供了一些讀寫操作來實(shí)現(xiàn)可靠的鎖。

Redis可靠加鎖實(shí)現(xiàn)主要圍繞SETNX 操作以及 對應(yīng)的讀取、更新命令展開,其大致過程如下:

使用 SETNX 操作嘗試在 Redis 中寫入一個(gè)KEY,如果 Redis 將 key 寫入成功,則表明獲得鎖。

讀取該 key的值,如果當(dāng)前 key 對應(yīng)的值為當(dāng)前節(jié)點(diǎn)的標(biāo)識(shí),表明獲得鎖,否則沒有獲得鎖。

有,使用 GETSET 命令更新鎖的標(biāo)識(shí),防止因加鎖過程過長而造成死鎖。

正常完成業(yè)務(wù)操作后,使用 DEL 命令刪除 key 來釋放鎖。

同時(shí),在 Redis 讀寫實(shí)現(xiàn)可靠加鎖中還需要考慮以下技術(shù)細(xì)節(jié):

(1)避免加鎖過程過長,超時(shí)時(shí)間最好控制在 1s 之內(nèi)

(2)盡量避免鎖的注入,如果key的值與當(dāng)前node標(biāo)識(shí)不一致表明該鎖被其他節(jié)點(diǎn)占用,避免注入

(3)針對異常情況,不應(yīng)把失敗的執(zhí)行結(jié)果重新丟回重試隊(duì)列,應(yīng)該釋放掉鎖,避免死鎖

下面給出一段示例代碼,其思路與上述描述邏輯類似:

//Write

String key = “l(fā)ock-key”;

String value = “l(fā)ock-value”;

Long lockBegin = System.currentTimeMillis();

while (true) {

if (jedis.setnx(lockKey, lockValue) == 1) {

//獲得鎖

break;

}

//獲取鎖超時(shí)時(shí)間

if (System.currentTimeMillis() – lockBegin > timeout) {

//超時(shí)時(shí)間尚未獲得鎖,所以終止嘗試

break;

}

//隔一段時(shí)間再次嘗試獲取鎖

Thread.sleep(1000);

}

//Read

String lockValue = jedis.get(lockKey);

if(lockValue.equals(value){

//key對應(yīng)value值是當(dāng)前節(jié)點(diǎn)標(biāo)識(shí),即獲得鎖

}

//Update

if (lockValue.equals(value)) {

//更新鎖的value

jedis.getset(lockKey, newValue);

}

//Delete

if (lockValue.equals(value)) {

//正常情況下,業(yè)務(wù)處理完畢后,釋放鎖

jedis.del(lockKey);

}

以上示例中,Redis 的讀寫實(shí)現(xiàn),可以有效保證可靠性,實(shí)現(xiàn)集群服務(wù)的高可用性。

在架構(gòu)設(shè)計(jì)上,分布式事務(wù)尤為重要,Redis 讀寫實(shí)現(xiàn)可靠加鎖,在保證高可用性的情況下,以盡量少的性能損失換取了穩(wěn)定性,彌補(bǔ)了2PC模型的不足,是很好的一種方案。

創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌網(wǎng)站設(shè)計(jì),成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務(wù),全網(wǎng)營銷讓企業(yè)網(wǎng)站產(chǎn)生價(jià)值。


當(dāng)前題目:Redis讀寫實(shí)現(xiàn)可靠加鎖(redis讀寫加鎖)
網(wǎng)站網(wǎng)址:http://m.5511xx.com/article/cdhojde.html