| RDB | AOF | |
| 存儲數據 | 保存鍵空間的所有鍵值對(包括過期字典中的數據),並以二進制形式保存,符合rdb文件規范,根據不同數據類型會有不同處理 |
保存redis服務器所執行的所有寫命令來記錄數據庫狀態,在寫入之前命令存儲在aof_buf緩沖區。 |
| 持久化時間選擇 | 通過conf的save選項設置持久化行為(單位時間內的修改次數)。 |
通過conf的appendfsync選項設置持久化行為 |
| 數據還原 | 服務器載入rdb文件,阻塞線程,在載入完成之前不接受任何命令。 |
服務器創建不帶網絡連接的偽客戶端,讀取aof文件中的所有命令並執行(redis服務開啟aof持久化在服務器啟動時會選擇aof文件恢復數據庫狀態) |
| 過期鍵 | 在寫入或讀取時會忽略過期鍵 | 不會忽略過期鍵,在鍵被惰性刪除或定期刪除時向aof文件追加一條刪除命令 |
| 文件大小 | 隨着存儲數據量的變化而變化(根據不同數據類型有不同的數據壓縮優化) | 隨着執行命令的增加而增加(通過aof重寫進行優化) |
| 執行命令 | SAVE和BGSAVE | -- |
