緩存雪崩和緩存穿透問題解決方案


緩存雪崩

 

簡介:緩存同一時間大面積的失效,所以,后面的請求都會落到數據庫上,造成數據庫短時間內承受大量請求而崩掉。

 

解決辦法:

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

  • 事中:本地 Ehcache 緩存 + Hystrix 限流&降級,避免 MySQL 崩掉。

  • 事后:利用 Redis 持久化機制保存的數據盡快恢復緩存。

 

緩存穿透

 

簡介:一般是黑客故意去請求緩存中不存在的數據,導致所有的請求都落到數據庫上,造成數據庫短時間內承受大量請求而崩掉。

 

解決辦法:有很多種方法可以有效地解決緩存穿透問題,最常見的則是采用布隆過濾器,將所有可能存在的數據哈希到一個足夠大的 bitmap 中。

 

一個一定不存在的數據會被這個 bitmap 攔截掉,從而避免了對底層存儲系統的查詢壓力。

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM