新聞中心
問題

隨著網絡技術的發(fā)展,企業(yè)以及各行業(yè)都離不開互聯(lián)網的支持,在移動化的交互過程中,信息的安全性也同樣重要??紤]到競爭環(huán)境中數(shù)據(jù)庫的高并發(fā)讀寫情況,為了防止數(shù)據(jù)混亂,各企業(yè)基本都采取的數(shù)據(jù)庫的鎖的機制來保護數(shù)據(jù)安全性。
Redis鎖又稱分布式鎖,是一種解決網絡編程中典型的“訪問沖突”問題的分布式環(huán)境下的一種鎖定服務。它可以防止多個客戶端同時對同一資源進行競爭搶占,從而導致數(shù)據(jù)混亂或沖突。由于Redis鎖對數(shù)據(jù)庫多線程安全性有很大的改善,使得Redis鎖受到很多企業(yè)的青睞。
但是也存在一定的弊端,由于Redis鎖在網絡上運行,在競爭環(huán)境中存在雙重獲取的可能性,兩個不同的客戶端同時得到一個鎖。有關Redis鎖的雙重獲取問題,已經有十分優(yōu)秀的解決方案:采用watch-lock機制,即更新前對當前鎖進行監(jiān)聽,如果在監(jiān)視到更新前狀態(tài)發(fā)生變化,則可以立即發(fā)現(xiàn),從而獲得雙重獲取問題的解決。
以Java編碼實現(xiàn)watch-lock機制:
Jedis jedis = new Jedis(“127.0.0.1”,6379);
jedis.watch(“abc”,key);
String value = jedis.get(“abc”);
// 把上一次讀取的數(shù)據(jù)和現(xiàn)在獲取的數(shù)據(jù)對比
if(value.equals(“old-data”)){
Transaction tx = jedis.multi();
tx.set(“abc”, newData);
tx.exec();
}
從上面的示例中可以看出,通過watch-lock機制,如果有多臺機器同時獲取同一鎖資源,當一臺機器更新前會立即發(fā)現(xiàn),從而防止數(shù)據(jù)混亂,相應地處理競爭環(huán)境中Redis鎖的雙重獲取問題。
總結而言,Redis鎖是保護數(shù)據(jù)安全性的有效方法,但是當Redis鎖處于競爭環(huán)境時,可能存在雙重獲取的問題,這時需要采取的措施,最有效的措施是watch-lock機制。
成都網站建設選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網站制作設計,高端小程序APP定制開發(fā),成都網絡營銷推廣等一站式服務。
本文題目:競爭環(huán)境中Redis鎖的雙重獲?。╮edis鎖同時獲?。?
本文URL:http://m.5511xx.com/article/dhdsjdg.html


咨詢
建站咨詢
