高併發系統下,常見的幾種快取失效問題及解決方案

2021-10-23 07:24:54 字數 439 閱讀 8659

介紹:當查詢乙個不存在的資料,此時快取是不命中的,就會去查詢 db,這將導致每次查詢這個不存在的資料都要去訪問 db,快取就沒有意義了。

如果不懷好意的人利用不存在的資料進行攻擊,可能導致資料庫崩潰

解決:

介紹:我們設定某個 key 時使用了相同的過期時間,導致快取在同一時間失效,請求湧入 db,導致資料庫壓力過重雪崩。

解決:

介紹:對於一些設定了過期時間的 key,如果這些 key 可能會在某些時間點被超高併發地訪問,是一種非常「熱點」的資料。如果這個 key 在大量請求同時進來前正好失效,那麼所有對這個 key 的資料查詢都落到 db,我們稱為快取擊穿。

解決:

高併發下快取失效問題

快取穿透 指查詢乙個一定不存在的資料,由於快取是不命中,將去查詢資料庫,但是資料庫也無此記錄,我們沒有將這次查詢的null寫入快取,這將導致這個不存在的資料每次請求都要到儲存層去查詢,失去了快取的意義 風險 利用不存在的資料進行攻擊,資料庫瞬時壓力增大,最終導致崩潰 解決 null結果快取,並加入短...

高併發下快取失效問題

1.快取穿透 查詢乙個一定不存在的資料,由於快取一定不命中,將查詢資料庫,並且沒有將null寫入快取,這將導致這個不存在的資料每次請求都到儲存層查詢。風險 利用不存在的資料進行攻擊,資料庫瞬時壓力增大,最終導致崩潰。解決方案 null結果快取,並加入短暫過期時間。2.快取雪崩 指設定快取時key採用...

高併發場景下的快取常見的問題

當資料時效性要求很高時,需要保證快取中的資料與資料庫中的保持一致,而且需要保證快取節點和副本中的資料也保持一致,不能出現差異現象。這就比較依賴快取的過期和更新策略。一般會在資料發生更改的時,主動更新快取中的資料或者移除對應的快取。快取過期後將嘗試從後端資料庫獲取資料,這是乙個看似合理的流程。但是,在...