新聞中心
NONBLOCKING LOCK,即非阻塞鎖,是在鎖競(jìng)爭(zhēng)少的情況下,可以極大地改善系統(tǒng)性能。在多線程多服務(wù)環(huán)境中,為了保證準(zhǔn)確性,往往要給一些資源加鎖,比如臨界資源,數(shù)據(jù)庫(kù)操作,緩沖池,等等。如果在傳統(tǒng)的鎖競(jìng)爭(zhēng)嚴(yán)重的情況下,往往會(huì)影響應(yīng)用的響應(yīng)時(shí)間和吞吐量,進(jìn)而影響整體服務(wù)的穩(wěn)定性。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括偏關(guān)網(wǎng)站建設(shè)、偏關(guān)網(wǎng)站制作、偏關(guān)網(wǎng)頁(yè)制作以及偏關(guān)網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,偏關(guān)網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到偏關(guān)省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
為了解決這一問(wèn)題,技術(shù)處理者會(huì)考慮采用非阻塞鎖機(jī)制。在采用非阻塞鎖的情況下,不同的線程允許并行訪問(wèn)資源,而不必等待另一個(gè)線程執(zhí)行完成,從而可以顯著提高系統(tǒng)性能。
引入非阻塞鎖的一種常見(jiàn)方式是使用Redis,Redis是一種開(kāi)源的內(nèi)存數(shù)據(jù)庫(kù),支持實(shí)時(shí)數(shù)據(jù)存儲(chǔ)和讀取,為應(yīng)用提供高性能訪問(wèn)。通過(guò)操作Redis實(shí)現(xiàn)可以使用更大的內(nèi)存空間來(lái)管理多個(gè)進(jìn)程,且性能更強(qiáng)。
要實(shí)現(xiàn)基于Redis的非阻塞鎖,可以采用的一種做法是使用Redis的SETNX命令(即SET if Not eXists),即只有當(dāng)這個(gè)key不存在的時(shí)候,SETNX才會(huì)給它設(shè)置上值,否則返回失敗。
以下代碼可以使用SETNX實(shí)現(xiàn)前述非阻塞鎖:
public boolean tryLock(Jedis jedis) throws InterruptedException {
long startTime = System().currentTimeMillis();
do {
String result = jedis.set("lockKey","LOCK_VALUE","NX","EX",60);
if("OK".equals(result)) {
return true;
}
Thread.sleep(10);
} while ((System.currentTimeMillis() - startTime)
return false;
}
此外,使用Redis可以實(shí)現(xiàn)高性能的可重入鎖,也就是說(shuō),一個(gè)線程可以多次獲取同一個(gè)鎖而不會(huì)阻塞,提高了系統(tǒng)的可用程度。使用的做法是,在實(shí)現(xiàn)Redis Keys的時(shí)候,為某個(gè)線程指定對(duì)于某個(gè)資源加鎖的次數(shù),從而只有當(dāng)某個(gè)線程成功釋放了鎖,其他線程才能獲得該鎖,從而實(shí)現(xiàn)可重入鎖。
總結(jié)來(lái)看,由于Redis支持實(shí)時(shí)數(shù)據(jù)讀寫(xiě),采用Redis實(shí)現(xiàn)非阻塞鎖可以顯著提升系統(tǒng)性能,且還可以實(shí)現(xiàn)高性能的可重入鎖,為系統(tǒng)操作提供更大的穩(wěn)定性。
創(chuàng)新互聯(lián)是成都專業(yè)網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、SEO優(yōu)化、手機(jī)網(wǎng)站、小程序開(kāi)發(fā)、APP開(kāi)發(fā)公司等,多年經(jīng)驗(yàn)沉淀,立志成為成都網(wǎng)站建設(shè)第一品牌!
本文題目:NONBLOCKING鎖Redis實(shí)現(xiàn)高性能訪問(wèn)控制(redis鎖是非阻塞的)
瀏覽路徑:http://m.fisionsoft.com.cn/article/dhhephh.html


咨詢
建站咨詢
