使用快照和AOF將Redis數據持久化到硬盤中

一、前言

Redis是一款內存服務器,爲了避免出現突然斷電造成Redis服務器中的數據失效。我們需要對數據進行備份。將Redis在內存中的數據持久化到硬盤等非易失性介質中,來保證數據的可靠性。Redis提供了兩種方式,快照和只追加文件。

快照(RDB):就是我們通常所說的備份,定期將內存中的數據持久化到硬盤中。

只追加文件(AOF):在執行寫命令的時候,將寫命令複製到硬盤中,後期只需再重新執行一次命令就可以。

二、快照持久化

快照就是我們所說的備份,用戶可以將Redis內存中的數據在某一個時間點進行備份,在創建快照之後,用戶可以對快好進行備份。但是創建快照的方式並不能完全保證我們的數據不丟失,快照只能恢復上次備份之前的數據。系統發生崩潰後,用戶將丟失最近一次快照之後更改的所有數據。一次,快照持久化只適合於數據不經常更改後丟失數據影響不太大的場景。

常見快照的方式:

客戶端通過向Redis發送BGSAVE 命令來創建快照。使用BGSAVE 的時候,Redis會調用fork創建一個子進程,然後子進程負責將數據寫到硬盤裏,而父進程繼續處理命令請求。

使用場景:

當Redis通過SHUTDOWN命令接收到關閉服務器的請求時,會執行一次SAVE命令,阻塞所有的客戶端,不再執行客戶端發送的任何消息,並且在執行完SAVE命令之後關閉服務器。

三、AOF持久化

AOF持久化會將被執行的寫命令寫到AOF文件的末尾,以此來記錄數據發生的變化。這樣,我們再恢復數據的時候,只需要從頭到尾執行一下AOF即可恢復數據。

同步頻率:

選項 同步頻率
always 每個Redis寫命令都要同步寫入硬盤,這樣會嚴重降低Redis的速度
everysec 每秒執行一次同步,顯示地將多個寫命令同步到硬盤
no 讓操作系統來決定應該何時進行同步

重寫/壓縮AOF文件:

隨着數據量的增大,AOF的文件可能會很大,其中包含着一些冗餘信息。用戶可以向Redis發送BGREWRITEAOF 命令,這個命令會通過移除AOF文件中的冗餘命令來重寫AOF文件,使AOF文件的體積變得儘可能小。

參考文章:https://blog.csdn.net/xlgen157387/article/details/61925524

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章