RDB持久化是指在指定的時間間隔內將內存中的數據集快照寫入磁盤,實際操作過程是fork壹個子進程,先將數據集寫入臨時文件,寫入成功後,再替換之前的文件,用二進制壓縮存儲。(推薦學習:Redis視頻教程)
AOF持久化以日誌的形式記錄服務器所處理的每壹個寫、刪除操作,查詢操作不會記錄,以文本的方式記錄,可以打開文件看到詳細的操作記錄。
RDB持久化和AOF持久化的區別:
1、存儲數據
RDB持久化保存鍵空間的所有鍵值對(包括過期字典中的數據),並以二進制形式保存,符合rdb文件規範,根據不同數據類型會有不同處理。
AOF持久化保存redis服務器所執行的所有寫命令來記錄數據庫狀態,在寫入之前命令存儲在aof_buf緩沖區。
2、持久化時間選擇
RDB持久化通過conf的save選項設置持久化行為(單位時間內的修改次數)。
AOF持久化通過conf的appendfsync選項設置持久化行為(單位時間內的修改次數)。
3、數據還原
RDB持久化:服務器載入rdb文件,阻塞線程,在載入完成之前不接受任何命令。
AOF持久化:服務器創建不帶網絡連接的偽客戶端,讀取aof文件中的所有命令並執行(redis服務開啟aof持久化在服務器啟動時會選擇aof文件恢復數據庫狀態)
4、過期鍵
RDB持久化在寫入或讀取時會忽略過期鍵
AOF持久化不會忽略過期鍵,在鍵被惰性刪除或定期刪除時向aof文件追加壹條刪除命令
5、文件大小
RDB持久化隨著存儲數據量的變化而變化(根據不同數據類型有不同的數據壓縮優化)
AOF持久化隨著執行命令的增加而增加(通過aof重寫進行優化)
更多redis相關技術知識,請訪問Redis使用入門教程欄目學習!