您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Redis持 RDB與AOF的執行過程是怎么樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
Redis 持久化支持兩種方式 RDB 與 AOF,文章記錄兩者的執行過程與配置。
RDB 持久化是把當前進程數據生成快照保存到硬盤的過程,觸發 RDB 持久化過程分為手動觸發和自動觸發。
會堵塞當前 Redis 服務器,直到 RDB 結束為止,對數據量較大或者內存較大的實例,會堵塞較長時間,生產環境不建議使用。如果手動執行 save 命令,Redis 會記錄下方日志。
127.0.0.1:6379> save
OK
* DB saved on disk
Redis 進程執行 fork 操作創建子進程,RDB 持久化過程由子進程負責,完成后自動結束。阻塞只發生在 fork 階段,一般時間很短。如果手動執行 bgsave 命令,Redis 會記錄下方日志。
* Background saving started by pid 90338
* DB saved on disk
* RDB: 0 MB of memory used by copy-on-write
* Background saving terminated with success
bgsave 對 save 堵塞進行優化,Redis 內部涉及 RDB 操作都是由 bgsave 完成。
使用 save 相關配置,如 save m n
表示 m 秒內數據集存在 n 次修改時,觸發一次 RDB;
從節點執行全量復制操作,主節點自動執行 bgsave 生成 RDB 文件發送給從節點;
執行 debug relad 重新加載 Redis 時,也會觸發生產 RDB;
默認情況下,執行 shutdown 關閉 Redis 時,如果沒有開啟 AOF 持久化功能,則會觸發 RDB。
通過設置 dir 可以配置 RDB 保存位置 dbfilename 可以設置文件名。
config set dir /opt/redis-5.0.12/backup
config set dbfilename myback.rdb
Redis 默認采用 LZF 算法對生成的RDB文件做壓縮處理,壓縮后的文件遠遠小于內存大小,默認開啟
,可以通過 rdbcompression 參數配置。
config set rdbcompression{yes|no}
壓縮 RDB 雖然會消耗 CPU 但是可以大幅度減少文件體積,方便存儲或通過網絡發送給從節點。
RDB 方式數據沒辦法做到實時持久化/秒級持久化。因為 bgsave 每次運行都要執行 fork 操作創建子進程,屬于重量級操作,頻繁執行成本過高。
RDB文件使用特定二進制格式保存,Redis 版本演進過程中有多個格式的 RDB 版本,存在老版本 Redis 服務無法兼容新版 RDB 格式的問題。
AOF(appendonlyfile)持久化:以獨立日志的方式記錄每次寫命令,重啟時再重新執行 AOF 文件中的命令達到恢復數據的目的。AOF 的主要作用是解決了數據持久化的實時性,目前已經是 Redis 持久化的主流方式。
# 配置開啟 AOF config set appendonly yes # 配置文件名,默認 appendonly.aof config set appendfilename xxx.aof # 存儲位置配置,與 RDB 一樣 config set dir /opt/redis-5.0.12/backup
所有的命令都會追加到 aof_buf(緩沖區)中;AOF 緩沖區根據對應的策略向磁盤同步操作;隨著 AOF 文件越來越大,需要定期對 AOF 重寫,達到壓縮目的;當 Redis 服務器重啟時,可以加載AOF文件進行數據恢復。 3. 重寫機制
手動觸發:
bgrewriteaof
自動觸發,根據下方兩個參數設置自動觸發機制:
auto-aof-rewrite-min-size
auto-aof-rewrite-percentage
看完上述內容,你們對Redis持 RDB與AOF的執行過程是怎么樣的有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。