redis學習(三)快取雪崩與快取穿透

2021-10-03 17:13:47 字數 604 閱讀 1129

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

可能的情況有以下兩種:

1、全部資料設定的快取時間同時到期,導致所有請求全部打在關係型資料庫上,造成請求雪崩,很有可能把資料庫壓崩導致服務宕機

2、redis服務因為某些原因宕機,導致所有請求全部打在關係型資料庫上

解決方案:

事前:盡量保證整個 redis 集群的高可用性,設定好主從分布+哨兵監聽,發現機器宕機盡快補上。選擇合適的記憶體淘汰策略。

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

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

快取擊穿通常是故意的,屬於黑客攻擊的一種手段,丟擲大量不存在的key,跳過redis直接打在關係型資料庫上,達到讓資料庫崩潰的目的

解決方案:

1、快取無效 key: 如果快取和資料庫都查不到某個 key 的資料就寫乙個到 redis 中去並設定過期時間,這種方式只可以解決請求的 key 變化不頻繁的情況,並且不能根本性的解決問題

2、通過布隆過濾器,過濾掉非法的key,保護資料庫

redis 快取穿透與快取雪崩

快取穿透 快取系統,按照 key去查詢 value,當key 對應的value 一定不存在的時候並對 key併發請求量很大的時候,就會對後端造成很大的壓力。如何避免 1.對查詢機構為空的情況也進行快取,快取的時間設定端一點,或者對該 key對應的資料 insert 之後清理快取。2.對一定不存在的 ...

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

3.快取雪崩 4.快取擊穿 使用redis快取訪問過程如下 應用訪問redis快取,如果redis快取中資料存在,直接從快取中返回資料。如果快取中不存在資料,會直接訪問資料庫,同時把資料寫進redis快取,下次訪問就可以直接從redis快取中讀取資料。訪問乙個不存在的資料,快取會不起作用,請求會直接...

redis快取雪崩

今天來分享一下redis幾道常見的面試題 回顧一下我們為什麼要用快取 redis 現在有個問題,如果我們的快取掛掉了,這意味著我們的全部請求都跑去資料庫了。在前面學習我們都知道redis不可能把所有的資料都快取起來 記憶體昂貴且有限 所以redis需要對資料設定過期時間,並採用的是惰性刪除 定期刪除...