Redis常見問題企業級解決方案

2021-10-05 09:39:10 字數 1896 閱讀 8779

當資料量過大,主從之間資料量過大、資料同步過多時可能會發生宕機情況。尤其是在redis服務啟動時。

解決方案

前置工作:

準備工作:

實施:總結

快取預熱就是系統啟動前,將相關的快取資料載入到快取中。避免使用者先查詢資料庫,然後再將資料快取的情況。使用者直接從快取中得到資料。

資料庫服務崩潰過程

系統平穩執行中,資料庫連線量激增

應用伺服器無法及時處理請求

大量408、500錯誤出現

使用者反覆重新整理頁面,獲取資料

資料庫崩潰

應用服務崩潰

應用服務重啟無效

redis伺服器崩潰

redis集群崩潰

重啟資料庫後再次被瞬間流量放倒

問題分析

當短時間內redis大量key過期,應用伺服器向快取請求資料時,沒有命中,然後向資料庫查詢。造成資料庫訪問量激增,資料庫無法處理這麼多的請求。從而引發一系列錯誤。

解決方案1

總結

快取雪崩就是key集中時間過期,造成資料庫訪問量過大。如果能有效避免key過期時間集中,可有效避免快取雪崩現象。配合其他的策略一起使用,監控伺服器效能指標。

資料庫崩潰過程

系統平穩執行中資料庫訪問量激增

redis服務無大量key過期

redis服務平穩,無波動

資料庫崩潰

問題分析

redis某個key過期,該key的訪問量巨大,redis未命中。短時間內大量的請求資料庫,造成資料庫崩潰。

單個key高熱資料,key過期。

解決方案

總結

快取擊穿就是單個高熱key過期,redis未命中,短時間造成資料庫訪問量激增,從而使資料庫崩潰。應對策略應在業務資料分析與預先設定方面進行,配合監控測試與及時調整策略。仿照快取雪崩應對策略即可。

資料庫崩潰過程

系統平穩執行中

應用伺服器流量較大

redis伺服器命中率隨時間逐步降低

redis記憶體平穩,無記憶體壓力

redis伺服器cpu占用激增

資料庫服務壓力激增

資料庫崩潰

問題分析

redis中大面積出現未命中

出現非正常url訪問

解決方案

快取null

對查詢結果為null的資料進行快取(長期使用,定期清理),設定短時限,例如30-60秒,最高5分鐘

白名單策略

 提前預熱各種分類資料id對應的bitmaps,id作為bitmaps的offset,相當於設定了資料白名單。當載入正常資料時,放

行,載入異常資料時直接攔截(效率偏低)

 使用布隆過濾器(有關布隆過濾器的命中問題對當前狀況可以忽略)

實施監控

實時監控redis命中率(業務正常範圍時,通常會有乙個波動值)與null資料的佔比

------ 非活動時段波動:通常檢測3-5倍,超過5倍納入重點排查物件

------ 活動時段波動:通常檢測10-50倍,超過50倍納入重點排查物件

根據倍數不同,啟動不同的排查流程。然後使用黑名單進行防控(運營)

key加密

問題出現後,臨時啟動防災業務key,對key進行業務層傳輸加密服務,設定校驗程式,過來的key校驗

例如每天隨機分配60個加密串,挑選2到3個,混淆到頁面資料id中,發現訪問key不滿足規則,駁回資料訪問

Redis 企業級解決方案

快取預熱就是系統啟動前,提前將相關的快取資料直接載入到快取系統。避免在使用者請求的時候,先查詢資料庫,然後再將資料緩 存的問題!使用者直接查詢事先被預熱的快取資料!大量的key設定了相同的過期時間,導致在快取在同一時刻全部失效,造成瞬時db請求量大 壓力驟增,引起雪崩 解決方案 可以給快取設定過期時...

Redis 企業級解決方案

目錄快取雪崩 快取擊穿 快取穿透 效能指標監控 伺服器啟動後迅速宕機 請求數量較高 主從之間資料吞吐量較大,資料同步操作頻度較高 前置準備工作 日常例行統計資料訪問記錄,統計訪問頻度較高的熱點資料 利用 lru 資料刪除策略,構建資料留存佇列,例如 strom 與 kafka 配合 準備工作 將統計...

Redis學習 14 企業級解決方案

系統執行過程中,突然資料庫連線量暴增,資料庫崩潰,應用伺服器崩潰,重啟應用伺服器無效,redis伺服器和集群崩潰,資料庫重啟後再次被瞬間流量放倒。在乙個較短的時間內,快取中較多的key集中過期。key過期後,開始直接請求資料庫,資料庫無法及時處理。redis請求開始積壓,出現請求超時。請求積累到一定...