快取雪崩和快取穿透

2022-06-27 16:24:09 字數 546 閱讀 3808

1、快取雪崩:快取同一時間大面積的失效,所以,後面的請求都會落到資料庫上,造成資料庫短時間內承受大量請求而崩掉。

解決辦法:

事前:盡量保證整個 redis 集群的高可用性,發現機器宕機盡快補上。選擇合適的記憶體淘汰策略。

事中:本地ehcache快取 + hystrix限流&降級,避免mysql崩掉。

事後:利用 redis 持久化機制儲存的資料盡快恢復快取。

2、快取穿透:一般是黑客故意去請求快取中不存在的資料,導致所有的請求都落到資料庫上,造成資料庫短時間內承受大量請求而崩掉。

解決辦法: 有很多種方法可以有效地解決快取穿透問題,

最常見的則是採用布隆過濾器,將所有可能存在的資料雜湊到乙個足夠大的bitmap中,乙個一定不存在的資料會被 這個bitmap攔截掉,從而避免了對底層儲存系統的查詢壓力。

另外也有乙個更為簡單粗暴的方法(我們採用的就是這種),如果乙個查詢返回的資料為空(不管是資料不存在,還是系統故障),我們仍然把這個空結果進行快取,但它的過期時間會很短,最長不超過五分鐘。

快取雪崩和快取穿透

快取雪崩可能是因為資料未載入到快取中,或者快取同一時間大面積的失效,從而導致所有請求都去查資料庫,導致資料庫cpu和記憶體負載過高,甚至宕機。解決思路 1,採用加鎖計數,或者使用合理的佇列數量來避免快取失效時對資料庫造成太大的壓力。這種辦法雖然能緩解資料庫的壓力,但是同時又降低了系統的吞吐量。2,分...

快取穿透和快取雪崩

一 快取穿透 查詢乙個 必然不存在的資料,首先通過key到快取去查詢,不存在,然後到達db,這樣會對後台的db造成很大的壓力,這樣每次都會請求到達資料庫,這就是快取穿透 快取失效 如果快取集中在一段時間內失效,db的壓力凸顯 快取穿透避免的方法 1 最簡單粗暴的方法 如果在資料庫中查詢的也為null...

快取穿透和快取雪崩

也可以叫redis穿透和redis雪崩。redis是支援key value等多種資料結構的儲存系統,常用於快取。使用者進行查詢,發現redis記憶體資料庫中沒有資料,也就是快取沒有命中,就回去持久化層資料庫中進行查詢,發現也沒有,此次查詢失敗。當使用者過多,快取都沒有命中,每個都去持久化層資料庫中查...