1. 程式人生 > >快取中使用的問題:快取穿透+快取擊穿+快取雪崩

快取中使用的問題:快取穿透+快取擊穿+快取雪崩

1.  快取穿透:

    條件:訪問一個不存在的資料;

    說明:當訪問一個不存在的資料時,因為快取中沒有這個key,導致快取形同虛設,最終訪問後臺資料庫,但是資料庫中沒有該資料,所以返回null;

    隱患:如果有人惡意頻繁查詢一個不存在的資料,可能會導致資料庫負載高導致宕機;

    總結:業務系統訪問一個不存在的資料,稱為快取穿透;

    防護:限定同一IP訪問的頻率;

2.  快取擊穿:

    條件:當快取key失效/過期/未命中時,高併發訪問該key;

    說明:如果一個key設定了失效時間,當key失效時有一萬的併發請求訪問這個key,這時快取失效,所有請求都會訪問後臺資料庫,稱之為快取擊穿;

    場景:微博熱點訊息訪問量很大,如果該快取失效,則會直接訪問後臺資料庫,導致資料庫負載過高;

3.  快取雪崩:

    前提:高併發訪問,快取命中較低或者失效時;

    說明:假設快取都設定了失效時間,在同一時間內快取大量失效,如果這時候使用者高併發訪問,快取命中率過低,導致全部的使用者訪問都會訪問後臺真實的資料庫;

    場景:在高併發條件下,快取動態更新時;