redis緩存的雪崩與穿透總結

參考:https 😕/blog.csdn.net/qq_35433716/article/details/86375506

爲什麼要用緩存

  1. 提高查詢速度:緩存的查詢速度比數據庫的查詢速度快。
  2. 提高併發量:緩存承擔的部分請求,支持更高的併發。

緩存雪崩

什麼是緩存雪崩

  1. 緩存大面積失效,導致大量請求直接請求數據庫,從而導致系統崩潰。
  2. 緩存系統掛掉,導致請求直接到數據。

如何解決緩存雪崩

  1. 針對第一種情況,在設置緩存淘汰時間時,可以隨機設置,避免大量緩存一起失效,導致數據庫負載瞬時負載急劇增加。
  2. 針對第二種情況
    • 事前,注意redis的高可用,採用redis集羣;並做好緩存持久化。
    • 事中,一旦緩存真的掛掉了,我們可以採用 替換緩存的機制+限流 ,防止大量的請求直接把數據庫打掛。
    • 事後,利用持久化的緩存,重啓redis後,從硬盤中的數據恢復緩存,快速恢復緩存系統。

緩存穿透

什麼是緩存穿透

  1. 當我們請求的一些數據,數據庫和緩存中都沒有的話,那麼這個請求會先查詢緩存,然後查詢數據庫,然後才返回。如果有大量的這種請求,我們的緩存機制其實是沒有作用的,數據庫很有可能被這種大量穿透請求打掛。

如何解決緩存穿透

  1. 利用布隆過濾器,或者壓縮filter提前過濾非法請求。
  2. 對於非法請求也記錄在緩存中,下次查詢到在非法請求的緩存中,直接返回。

緩存與數據庫雙寫一致性

如何保證緩存與數據庫雙寫對的一致性

先刪除緩存,再更新數據庫
在高併發下表現不如意,在原子性被破壞時表現優異
先更新數據庫,再刪除緩存(Cache Aside Pattern設計模式)
在高併發下表現優異,在原子性被破壞時表現不如意

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章