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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用Redis實現(xiàn)分布式鎖機制(基于redis加鎖)

Redis作為一款高性能的分布式NOSQL數(shù)據(jù)庫,具有十分優(yōu)越的性能,可被用作緩存、分布式鎖等,本文主要針對Redis在分布式環(huán)境中如何實現(xiàn)分布式鎖機制進行介紹。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供澗西網(wǎng)站建設(shè)、澗西做網(wǎng)站、澗西網(wǎng)站設(shè)計、澗西網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、澗西企業(yè)網(wǎng)站模板建站服務(wù),十多年澗西做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

我們來看下Redis支持的分布式鎖機制,Redis提供有三種實現(xiàn)分布式鎖的方式,分別是setnx, setex和lua腳本,其中前兩種方式都是使用Redis的string類型key來實現(xiàn)的,另一種是使用Redis的lua腳本實現(xiàn)的。

我們以setnx實現(xiàn)分布式鎖為例,setnx可以作為原子性操作來以Redis存儲對應(yīng)key,代碼如下:

//假設(shè)需要鎖住的資源為lock-key
String lockKey = "lock-key";
//獲取鎖的超時時間,超過這個時間證明分布式鎖失效,可以重新獲取
long TIMEOUT = 3000;
long timestamp = System.currentTimeMillis() + TIMEOUT + 1;
String lockValue = String.valueOf(timestamp);
//設(shè)置鎖,如果設(shè)置失敗,則重新嘗試設(shè)置
if( jedis.setnx(lockKey, lockValue) == 0){
//重新嘗試
}
//設(shè)置成功,設(shè)置失效時間
if( jedis.expire(lockKey, TIMEOUT) == -1){
//設(shè)置失效時間失敗
}

我們來看看如何使用lua腳本實現(xiàn)分布式鎖,下面的腳本的作用是把key放入Redis,然后把value設(shè)置為當前時間戳:

//獲取鎖的超時時間,超過這個時間證明分布式鎖失效,可以重新獲取
long TIMEOUT = 3000;
String luaScript = "local currentTimeStamp = redis.call('get', KEYS[1]);"+
"if (currentTimeStamp and tonumber(currentTimeStamp) > tonumber(ARGV[1])) then \n"+
"return 0; \n"+
"end; \n "+
"redis.call('SETEX',KEYS[1],ARGV[2],ARGV[1]); \n"+
"return 1; \n";
Object result = jedis.eval(luaScript, new String[]{lockKey},
new String[]{lockValue,String.valueOf(TIMEOUT)});
//設(shè)置成功
if(result.equals(1)){
//處理業(yè)務(wù)
}

通過上述方法,可以分別用setnx或lua腳本實現(xiàn)Redis分布式鎖機制,使得多個服務(wù)在分布式環(huán)境中可以安全的訪問同一資源,保證其并發(fā)訪問時的安全性。

成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網(wǎng)站制作設(shè)計,高端小程序APP定制開發(fā),成都網(wǎng)絡(luò)營銷推廣等一站式服務(wù)。


當前文章:使用Redis實現(xiàn)分布式鎖機制(基于redis加鎖)
文章URL:http://m.5511xx.com/article/ccohode.html