新聞中心
的情況

為科爾沁左翼等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及科爾沁左翼網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、網(wǎng)站制作、科爾沁左翼網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
Redis作為一款非常受歡迎的開源內(nèi)存數(shù)據(jù)庫,已經(jīng)普遍應(yīng)用于不同社區(qū)環(huán)境中,其最強大之處在于可以通過其內(nèi)置的、重寫的建立鎖來實現(xiàn)可靠的數(shù)據(jù)同步,實現(xiàn)資源的排他性訪問和有效的冗余數(shù)據(jù)存儲,但是Redis鎖也存在一些值得我們注意的潛在缺陷。
Redis鎖是信號量機制,不在進程內(nèi)部實現(xiàn),當我們使用Redis保證資源訪問的排他性時,仍然存在危險的情況。比如,當進程B嘗試獲取該資源時,若資源已被進程A占有,而進程A由于網(wǎng)絡(luò)原因無法釋放該鎖,此時就會出現(xiàn)進程B永久無法獲得并使用該資源的情況。
另一方面,無論使用進程間同步/異步發(fā)送Redis命令的方式,都可能發(fā)生由于網(wǎng)絡(luò)等原因而引起的數(shù)據(jù)讀取延遲。由于訪問這種數(shù)據(jù)的硬件架構(gòu)的增加,這種延遲的發(fā)生幾率也越來越高,從而打破可靠的數(shù)據(jù)同步機制,使得鎖機制無法發(fā)揮本應(yīng)擁有的原子性和可靠性。
為了避免這種潛在危險,可以借助常用的安全工具來保證Redis鎖正確得以被使用,比如使用一把備用鎖,當Redis鎖被可能鎖被持續(xù)占有時,使用備用鎖來解決鎖死危險。同時,使用實時系統(tǒng)處理網(wǎng)絡(luò)延遲推進Redis鎖的正常工作,以幫助正確地弱化或失效鎖,從而實現(xiàn)安全的鎖使用。
存在的潛在缺陷并不使Redis鎖失去其作為一種讓數(shù)據(jù)同步可靠的重要角色,但只要主動檢測并妥善應(yīng)用響應(yīng)的保證金機制,就可以有效防范Redis鎖可能存在的危險情況。
示例代碼:
// 嘗試獲取Redis鎖超時時間
public static final long LOCK_WT_SECONDS = 10;
// 上鎖以后自動釋放鎖的超時時間
public static final long LOCK_EXPIRE_SECONDS = 10;
// 備用鎖KEY
public static final String SPARE_LOCK = “spare_lock”;
private boolean getLock(String key, String value) {
return redisTemplate.opsForValue().setIfAbsent(key, value,
LOCK_WT_SECONDS, TimeUnit.SECONDS);
}
private void relaseLock(String key) {
// 獲取備用鎖
boolean spareLock = getLock(SPARE_LOCK, “”);
// 獲取鎖失敗時釋放備用鎖
if (!spareLock) {
redisTemplate.delete(SPARE_KEI);
} else {
// 嘗試釋放 Redis 鎖
redisTemplate.opsForValue.getOperations().delete(key);
// 如果沒有釋放給定 key,說明鎖還被占用,釋放備用鎖
if (redisTemplate.hasKey(key)) {
redisTemplate.opsForValue.getOperations().delete(SPARE_KEI);
}
}
}
創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌網(wǎng)站設(shè)計,成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務(wù),全網(wǎng)營銷讓企業(yè)網(wǎng)站產(chǎn)生價值。
網(wǎng)站欄目:Redis鎖存在潛在缺陷一種危險(redis鎖缺陷)
本文來源:http://m.fisionsoft.com.cn/article/dpgeehe.html


咨詢
建站咨詢
