Redis中的問題

Muten發表於2021-01-03

1.Redis 持久化機制

Redis是一個支援持久化的記憶體資料庫,通過持久化機制把記憶體中的資料同步到硬碟檔案來保證資料持久
化。當Redis重啟後通過把硬碟檔案重新載入到記憶體,就能達到恢復資料的目的。
實現:單獨建立fork()一個子程式,將當前父程式的資料庫資料複製到子程式的記憶體中,然後由子程式寫
入到臨時檔案中,持久化的過程結束了,再用這個臨時檔案替換上次的快照檔案,然後子程式退出,記憶體
釋放。
RDB是Redis預設的持久化方式。按照一定的時間週期策略把記憶體的資料以快照的形式儲存到硬碟的二進位制
檔案。即Snapshot快照儲存,對應產生的資料檔案為dump.rdb,通過配置檔案中的save引數來定義快照的
週期。( 快照可以是其所表示的資料的一個副本,也可以是資料的一個複製品。) AOF:Redis會將每一
個收到的寫命令都通過Write函式追加到檔案最後,類似於MySQL的binlog。當Redis重啟是會通過重新執行
檔案中儲存的寫命令來在記憶體中重建整個資料庫的內容。
當兩種方式同時開啟時,資料恢復Redis會優先選擇AOF恢復。

2.快取雪崩、快取穿透、快取預熱、快取更新、快取降級等問題

快取雪崩:
快取雪崩我們可以簡單的理解為:由於原有快取失效,新快取未到期.
(例如:我們設定快取時採用了相同的過期時間,在同一時刻出現大面積的快取過期),所有原本應該訪問
快取的請求都去查詢資料庫了,而對資料庫CPU和記憶體造成巨大壓力,嚴重的會造成資料庫當機.從而形成
一系列連鎖反應,造成整個系統崩潰.

 

相關文章