原理
從Redis 4版本之后,redis新增了混合持久化模式。
混合持久化同樣也是通過bgrewriteaof完成的,不同的是當開啟混合持久化時,fork出的子進程先將共享的內存副本全量的以RDB方式寫入aof文件,
然后在將aof_rewrite_buf重寫緩沖區的增量命令以AOF方式寫入到文件,寫入完成后通知主進程更新統計信息,並將新的含有RDB格式和AOF格式的AOF文件替換舊的的AOF文件。
簡單的說:新的AOF文件前半段是RDB格式的全量數據后半段是AOF格式的增量數據。
在redis重啟的時候,加載 aof 文件進行恢復數據:先加載 rdb 內容再加載剩余的 aof。
配置
RDB-AOF 混合持久化功能默認是處於關閉狀態的, 為了啟用該功能, 用戶不僅需要開啟 AOF 持久化功能, 還需要將 aof-use-rdb-preamble
選項的值設置為真
混合持久化配置:
appendonly yes
aof-use-rdb-preamble yes # yes:開啟,no:關閉