Redis快取穿透 快取雪崩問題

2021-10-06 21:54:08 字數 686 閱讀 4108

穿透雪崩主要是因為查詢資料庫造成的,那麼讀寫分離,快取資料查詢失敗不去查資料庫就好了。查的時候有即是有,無即是無,不會再查資料庫,快取的穿透和雪崩問題就不存在了。其次新增資料庫和快取同步功能,保證資料庫和快取資料是一致的即可(需要注意的是這時候資料庫資料是有限和相對穩定的,其實如果是海量資料同時放入快取這種設計策略,我個人認為本身就有些胡鬧)。

快取穿透問題

現象:請求快取中麼有對對應key的時候去資料庫取,大量的快取穿透可能造出資料庫不可用。

解決方法:

1.資料庫查詢為空,則空值更新快取(會增加快取無效值)

2.使用布隆過濾器,對於重複呼叫進行拒絕訪問(會產生誤判和邏輯複雜度)

快取雪崩問題

現象:快取失效,請求直接到db上導致db不可用

解決方案:key不失效;key失效時間錯開;分布式多活

總結

快取的穿透和雪崩都是在快取不可用時,大量連線到資料庫導致資料庫不可用導致的,從本質上來說做好資料庫的高可用,比如資料庫雙活,資料庫擴容,資料庫主從備份,流量監控,分流限流策略等都可以提高服務可用性,為服務恢復贏得有效時間。

當然另乙個要考慮的問題是黑客攻擊,因為正常服務請求很難造出db不可用,如果是黑客的大量請求,那麼相應的請求告警策略,流量分流限流策略就是非常必要的網路安全保證方案。

Redis快取穿透 快取雪崩

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

Redis 快取穿透 快取雪崩

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

redis快取穿透 快取雪崩

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