思惟導圖-Redis數據結構及應用

緩存穿透-訪問key未在DB查詢到值,也將空值寫進緩存

Windows啓動Redis:redis

redis-server.exe  redis.windows.confwindows

redis-cli.exe -h 127.0.0.1 -p 6379緩存

概念

訪問一個不存在的key,緩存不起做用,請求會穿透到DB,流量大時DB會掛掉。spa

解決方案

  1. 採用布隆過濾器,使用一個足夠大的bitmap,用於存儲可能訪問的key,不存在的key直接被過濾;
  2. 訪問key未在DB查詢到值,也將空值寫進緩存,但能夠設置較短過時時間。

緩存雪崩-設置過時時間

概念

大量的key設置了相同的過時時間,致使在緩存在同一時刻所有失效,形成瞬時DB請求量大、壓力驟增,引發雪崩。server

解決方案

能夠給緩存設置過時時間時加上一個隨機值時間,使得每一個key的過時時間分佈開來,不會集中在同一時刻失效。blog

緩存擊穿-在訪問key以前,採用SETNX(set if not exists)來設置另外一個短時間key來鎖住當前key的訪問

概念

一個存在的key,在緩存過時的一刻,同時有大量的請求,這些請求都會擊穿到DB,形成瞬時DB請求量大、壓力驟增。it

解決方案

在訪問key以前,採用SETNX(set if not exists)來設置另外一個短時間key來鎖住當前key的訪問,訪問結束再刪除該短時間key。io


相關文章
相關標籤/搜索