redis 快取穿透,快取雪崩,快取擊穿

2022-06-06 08:33:13 字數 536 閱讀 2073

1.快取穿透:快取穿透是指查詢乙個不存在的資料,由於快取是不命中,將去查詢資料庫,但是資料庫也無此記錄,這將導致這個不存在的資料每次請求都要到儲存層去查詢,失去了快取的意義。在流量大時,可能db就掛掉了,如果有人利用不存在的key頻繁攻擊我們的應用,這就屬於漏洞。比如用乙個不存在的使用者id獲取使用者資訊,不論快取還是資料庫都沒有,若黑客利用此漏洞攻擊可能壓垮資料庫。

解決辦法:(1)當查詢不存在時,也將結果儲存在快取中。但它的過期時間會很短,最長不超過五分鐘。

(2)提前過濾掉不合法的請求,redis實現了布隆過濾器,我們可以使用它來達成目的

2.快取擊穿:某個熱點資料在某個時間點過期時,恰好在這個時間點對這個key 有大量併發請求過來,這些請求發現快取過期一般都會從db載入資料並回設到快取,但是這個時候大併發的請求可能會瞬間壓垮db

3.快取雪崩:快取大量失效,導致大量的請求都直接向資料庫獲取資料,造成資料庫的壓力。快取大量失效的原因可能是快取伺服器宕機,或者大量redis的鍵設定的過期時間相同。

(2)部署分布式的redis服務,當乙個redis服務掛掉之後,進行故障轉移

Redis快取穿透 快取雪崩

把redis作為快取使用已經是司空見慣,但是使用redis後也可能會碰到一系列的問題,尤其是資料量很大的時候,經典的幾個問題如下 一 快取和資料庫間資料一致性問題 分布式環境下 單機就不用說了 非常容易出現快取和資料庫間的資料一致性問題,針對這一點的話,只能說,如果你的專案對快取的要求是強一致性的,...

Redis 快取穿透 快取雪崩

目錄 1.快取穿透 如何避免?如何選擇?2 快取擊穿 如何解決 3.快取雪崩 如何解決?快取穿透 一般的快取系統,都是按照key去快取查詢,如果不存在對應的value,就應該去後端系統查詢 比如db 一些惡意的請求會故意查詢不存在的key,請求量很大,就會對後端系統造成很大的壓力,或導致資料庫異常。...

redis快取穿透 快取雪崩

什麼是快取雪崩 在同一時間內大量的快取資料失效,大量的請求都會去資料庫查詢,造成快取雪崩。解決方法 這個沒有完美的解決方法,但是可以分析使用者行為,盡量讓失效時間點均勻分布,還有就是在快取失效後,通過加鎖或者佇列來控制讀資料庫寫快取的執行緒數量,比如對某國key只允許乙個執行緒查詢資料庫和快取,其他...