Redis緩存相關問題

Redis緩存相關問題

1 緩存穿透

  緩存穿透是指查詢一個數據庫一定不存在的數據.
正常使用Redis緩存的流程大致是:

  1. 數據查詢首先進行緩存查詢
  2. 如果數據存在則直接返回緩存數據
  3. 如果數據不存在,就對數據庫進行查詢,並把查詢到的數據放進緩存
  4. 如果數據庫查詢數據爲空,則不放進緩存

  如果有人惡意查詢數據庫中不存在的數據,就會對數據庫造成壓力,甚至壓垮數據庫,解決該問題的方法爲:

  如果從數據庫中查詢的對象爲空,也放入緩存,將用戶提交的主鍵值其value設爲null,並且將緩存過期時間設爲60秒,即使惡意攻擊也是從緩存中查詢爲null,不會頻繁查詢數據庫.

2 緩存雪崩

  緩存雪崩,是指在某一個時間段,緩存集中過期失效.在緩存集中失效的這個時間段對數據的訪問查詢,都落到了數據庫上,對於數據庫而言,就會產生週期性的壓力波峯.

  爲了避免雪崩的發生,可以將緩存的數據設置不同的失效時間.將訪問頻率高的數據緩存時間設置長一些,冷門的時間短一些.

3 緩存擊穿

  緩存擊穿,是指一個 key 非常熱點,不停的被集中的進行訪問,當這個數據在key失效的瞬間,持續的併發訪問就會擊破緩存,直接請求到數據庫上.
  將熱點數據設置永不過期就可以解決緩存擊穿的問題了.

發佈了50 篇原創文章 · 獲贊 3 · 訪問量 8741
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章