淺談 redis緩存穿透

什麼是緩存穿透:

緩存穿透是指一個一定不存緩存裏面的數據,由於緩存沒有所以這時需要去數據庫查詢,但是在數據庫查詢不到所以不會寫入緩存裏面,導致每次請求這個數據的時候都會去查詢數據庫,這就是緩存穿透。

解決方法:

1、不管這個請求返回的有沒有數據,都把它寫入緩存,但是過期時間不可以太長。

緩存空對象有兩個問題:

1.1、空值做緩存,意味着會有很多鍵需要更多的空間,如果是受到攻擊的話,比較有效的方法還是設置過氣時間。

1.2、緩存層和存儲層的數據會不一致,導致向客戶展示的數據會有問題,此時可以利用消息系統或者其他方式清除掉緩存層中的空對象。

2、所以有可能查詢的參數以hash形式儲存,在控制層先進行檢驗,不符合則丟棄,會有最常見的則是採用布隆過濾器,將可能存在的數據哈希到一個足夠強大的bitmap中,一個一定不存在的數據會被這個bitmap攔截,從而避免了對數據庫查詢的壓力。

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