新聞中心
Redis緩存穿透是指惡意用戶(hù)向緩存服務(wù)器發(fā)出大量無(wú)效對(duì)象請(qǐng)求,從而使緩存池?cái)?shù)據(jù)為空,給服務(wù)器帶來(lái)很大壓力,甚至導(dǎo)致服務(wù)器拒絕服務(wù),從而影響用戶(hù)的訪(fǎng)問(wèn)體驗(yàn)的現(xiàn)象,即緩存穿透現(xiàn)象。

創(chuàng)新互聯(lián)建站是專(zhuān)業(yè)的瑞金網(wǎng)站建設(shè)公司,瑞金接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行瑞金網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
要了解如何出現(xiàn)Redis緩存穿透現(xiàn)象:當(dāng)惡意用戶(hù)發(fā)出大量無(wú)效緩存對(duì)象請(qǐng)求,而緩存池中沒(méi)有無(wú)效對(duì)象的緩存數(shù)據(jù),那么就會(huì)造成緩存穿透。這就相當(dāng)于是把數(shù)據(jù)庫(kù)的查詢(xún)放入一個(gè)空袋子中,必然會(huì)得不到結(jié)果,他們很容易攻擊數(shù)據(jù)庫(kù),因此可能導(dǎo)致服務(wù)器拒絕服務(wù),并且數(shù)據(jù)庫(kù)的負(fù)載會(huì)大量增加而影響正常訪(fǎng)問(wèn)。
針對(duì)這個(gè)現(xiàn)象,我們可以采取以下措施:
1. 限制訪(fǎng)問(wèn)頻率和類(lèi)型,減少惡意訪(fǎng)問(wèn);
// 1秒最多只能請(qǐng)求5個(gè)
if(request.getInterval > 1000 && request.getNumber > 5){
denyStart();
}
2. 做校驗(yàn),先對(duì)輸入進(jìn)行校驗(yàn),去除無(wú)效參數(shù);
if(!checkGetParams(params)){
redirectIndexPage();
}
// 檢查參數(shù)是否合法
function checkGetParams(params){
for (let i = 0; i
if (!params[i]){
return false;
}
}
return true;
}
3. 增加緩存層,將不存在的緩存層交由緩存層處理,將存在的數(shù)據(jù)緩存層存入緩存,下次訪(fǎng)問(wèn)時(shí)直接去緩存拿,以此減輕數(shù)據(jù)庫(kù)的壓力;
if(cacheData == null){
cacheData = fetchDataFromDatabase(); // 從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)
setCacheData(cacheData); // 將從數(shù)據(jù)庫(kù)搜索到的數(shù)據(jù)放入緩存
}
綜上,Redis緩存穿透是一種不可忽視的現(xiàn)象,但是我們也可以采取一些措施來(lái)遏制這一現(xiàn)象,像限制訪(fǎng)問(wèn)頻率和類(lèi)型,做校驗(yàn),增加緩存層等,以此減少服務(wù)器的壓力,提高用戶(hù)的訪(fǎng)問(wèn)體驗(yàn),這樣才能良好的保障系統(tǒng)的穩(wěn)定性。
創(chuàng)新互聯(lián)(cdcxhl.com)提供穩(wěn)定的云服務(wù)器,香港云服務(wù)器,BGP云服務(wù)器,雙線(xiàn)云服務(wù)器,高防云服務(wù)器,成都云服務(wù)器,服務(wù)器托管。精選鉅惠,歡迎咨詢(xún):028-86922220。
網(wǎng)頁(yè)題目:探究Redis緩存穿透的真相(什么是redis緩存穿透)
URL鏈接:http://www.fisionsoft.com.cn/article/cohhgdo.html


咨詢(xún)
建站咨詢(xún)
