新聞中心
Redis雪崩又稱緩存雪崩,是指由于突然的大量數(shù)據(jù)過期而導(dǎo)致的系統(tǒng)響應(yīng)異常的現(xiàn)象。在微服務(wù)架構(gòu)中,Redis是大受歡迎的緩存技術(shù),再加上Redis的高可用性、快速的讀寫性能等優(yōu)勢,Redis的緩存雪崩問題也變成了系統(tǒng)設(shè)計時最重要的考慮點之一。

## Redis雪崩產(chǎn)生的原因
緩存雪崩一般是由于緩存數(shù)據(jù)量大,且均勻的到期時間,加上由于某項操作導(dǎo)致的系統(tǒng)性能瓶頸而產(chǎn)生的:
– 緩存主動過期:有些緩存過期機制由接觸自己的基本原理就會導(dǎo)致緩存同時過期,從而讓系統(tǒng)壓力劇增
– 動態(tài)調(diào)整過期時間:當微服務(wù)突然壓力增大時,為了緩解壓力會動態(tài)調(diào)整一部分緩存的過期時間,當過期時間一統(tǒng)一之后,很多緩存同時失效,造成系統(tǒng)崩潰
– 緩存穿透:如果客戶端經(jīng)常通過穿透緩存來獲取數(shù)據(jù)則也可能導(dǎo)致緩存雪崩
## Redis雪崩的預(yù)防措施
要預(yù)防Redis雪崩,一般采取以下方法:
– 增加緩存隨機過期時間
使用緩存時,一般設(shè)置緩存的默認過期時間,在默認時間的基礎(chǔ)上,在插入該緩存時,再多增加一個隨機的過期時間,這樣,即使系統(tǒng)出現(xiàn)過期峰值,也不會出現(xiàn)大面積的過期,從而降低Redis雪崩的危險。
String key = "user_name";
String value = "lily";
int expireTime = 60;
int randomExpireTime = 600;
jedis.setex(key, expireTime+randomExpireTime, value);
– 增加緩存失效預(yù)警
在系統(tǒng)配置參數(shù)中,添加及時失效預(yù)警功能,一旦發(fā)現(xiàn)緩存失效數(shù)量異常,立即預(yù)警,及時理解雪崩原因,并采用有效應(yīng)對措施。
int cacheInvalidNum = 10;
while(true) {
if(緩存失效數(shù)量 > cacheInvalidNum) {
String warningContent = "【緩存失效】緩存失效數(shù)量已超警戒值";
systemWarn(warningContent);
}
}
– 針對緩存穿透做訪問權(quán)限的限制
針對系統(tǒng)中出現(xiàn)大量的緩存穿透,可以在控制層添加權(quán)限驗證,把返回值都設(shè)置為一個統(tǒng)一的值,從而把對后端數(shù)據(jù)庫真實數(shù)據(jù)的訪問限制起來,避免頻繁訪問數(shù)據(jù)庫,從而降低Redis雪崩的概率。
while(true) {
if(未通過安全驗證) {
String securityContent = "【權(quán)限不足】無法獲取相關(guān)內(nèi)容";
return securityContent;
}
}
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)頁題目:Redis雪崩防范技術(shù)教學(xué)(redis雪崩教學(xué))
本文URL:http://m.fisionsoft.com.cn/article/cdhhejs.html


咨詢
建站咨詢
