2023-02-10 一、redis提供了2個不同形式的持久化方式 1、RDB(Redis DataBase) 2、AOF(Append Of File) 二、RDB的定義 RDB是在指定的時間間隔內將記憶體中的數據集快照寫入磁碟,即Snapshot快照,它恢復時是將快照文件直接讀到記憶體里。 三、備份 ...
2023-02-10
一、redis提供了2個不同形式的持久化方式
1、RDB(Redis DataBase)
2、AOF(Append Of File)
二、RDB的定義
RDB是在指定的時間間隔內將記憶體中的數據集快照寫入磁碟,即Snapshot快照,它恢復時是將快照文件直接讀到記憶體里。
三、備份執行的過程
redis會單獨創建(fork)一個子進程來進行持久化,會將數據寫入到一個臨時文件中,待持久化過程都結束了,再用這個臨時文件替換上次持久化好的文件。RDB方式要比AOF方式更加的高效。
RDB的缺點最後一次持久化後的數據可能丟失。
四、Fork
1、Fork的作用
它的作用是複製一個與當前進程一樣的進程。是作為原進程的子進程。
2、說明
(1)在linux程式中,fork()會產生一個和父進程完全相同的子進程,但子進程在此後會被exe系統調用,處於效率考慮,Linux中引入了“寫時複製技術”。
(2)一般情況父進程和子進程會共用同一段物理記憶體,只有進程空間的各段的內容要發生變化時,才會將父進程的內容複製一份給子進程。
五、redis中RDB快照觸發的時機
1、在redis資料庫中執行shutdown會觸發RDB快照
2、在redis資料庫中執行bgsave會觸發RDB快照
3、在redis.conf配置文件中設置例如“save 60 10”會觸發RDB快照
六、redis持久化之AOF
1、AOF(Append Only File)的含義
它是以日誌的形式記錄每個寫操作(增量保存),將redis執行過的所有寫指令記錄下來(讀操作不記錄),只許9追加文件但不可以改寫文件,redis啟動之初會讀取文件重新構建數據,簡而言之,redis重啟的話就根據日誌文件的內容將寫指令從前到後執行一次以完成數據的恢復工作。
2、AOF持久化流程
(1)客戶端的請求寫命令會被append追加到AOF緩衝區內
(2)AOF緩衝區根據AOF持久化策略將操作sync同步到磁碟的AOF文件中
(3)AOF文件大小超過重寫策略或手動重寫時,會對AOF文件rewrite重寫,壓縮AOF文件容量
(4)Redis服務重啟時,會重新load載入AOF文件中的寫操作,達到數據恢復的目的
3、說明
當AOF和RDB同時開啟時,redis聽AOF的。因為RDB最後一次緩存數據可能保存不完整。