新聞中心
緩存系統(tǒng)如何出錯?

創(chuàng)新互聯(lián)公司是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),外鏈,一元廣告為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
下圖顯示了緩存可能出錯的 4 種典型情況及其解決方案。
01 雷群問題(Thurder Hurd)
當(dāng)緩存中的大量 key 同時過期時,就會出現(xiàn)這種情況。然后,查詢請求直接沖擊數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫超載。
有兩種方法可以緩解這一問題:
- 避免為 key 設(shè)置相同的過期時間,在配置中添加一個隨機(jī)數(shù);
- 只允許核心業(yè)務(wù)數(shù)據(jù)訪問數(shù)據(jù)庫,而在緩存恢復(fù)之前阻止非核心數(shù)據(jù)訪問數(shù)據(jù)庫。
02 緩存滲透(Cache Penetration)
當(dāng)緩存或數(shù)據(jù)庫中不存在 key 時,就會發(fā)生這種情況。應(yīng)用程序無法從數(shù)據(jù)庫中檢索相關(guān)數(shù)據(jù)來更新緩存。這個問題給緩存和數(shù)據(jù)庫都造成了很大的壓力。
要解決這個問題,有兩種建議。
- 為不存在的 key 緩存一個空值,避免對數(shù)據(jù)庫造成沖擊。
- 使用 bloom 過濾器先檢查 key 是否存在,如果 key 不存在,我們就可以避免對數(shù)據(jù)庫的訪問。
03 緩存崩潰(Cache Breakdown)
這與雷群問題類似。它發(fā)生在熱鍵過期時。大量請求會訪問數(shù)據(jù)庫。
解決方案:由于熱鍵占據(jù)了 80% 的查詢量,我們沒有為它們設(shè)置過期時間。
04 緩存崩潰(Cache Crash)
當(dāng)緩存崩潰時,所有請求都會進(jìn)入數(shù)據(jù)庫。
有兩種方法可以解決這個問題。
- 設(shè)置斷路器 (Circuit Breaker),當(dāng)緩存宕機(jī)時,應(yīng)用服務(wù)無法訪問緩存或數(shù)據(jù)庫。
- 為高速緩存建立一個集群,以提高高速緩存的可用性。
新聞名稱:Redis緩存如何出錯?
文章出自:http://m.5511xx.com/article/dphgcod.html


咨詢
建站咨詢
