RDB
RedisDataBase是一種保存redis數據庫狀態的方式,存儲的是相對AOF更加直觀的數據,
數據內容大概是:
REDIS | dbversion | databases | EOF | check_sum |
---|
↑這是最上層的文件格式,比較底層的是key_value_pairs部分↓
TYPE | key | value |
---|
TYPE對應了string、list、set、zset、hash等數據結構
AOF
AppendOnlyFile是通過保存執行命令來實現持久化功能的
可以通過設置redis.conf打開
也可通過參數appendfsync來覺得AOF的持久化粒度,從而決定效率和安全性
- 每條都存
- 每隔一秒將緩衝區的內容寫到AOF文件裏,假如服務器宕機,僅僅丟失1秒的數據
- 由操作系統控制將內存緩衝區的內容寫入AOF文件,安全性相對較低
隨着程序運行時間越來越長,AOF文件勢必越來越大,導致還原時間也將會越來越長,因此爲了解決膨脹問題,redis提供了重寫功能,原理:將多條操作簡化成一條,注意不是合併,不會去對AOF進行讀取,而是之間獲取服務器當前狀態實現的。
後臺重寫
是將客戶端發來的命令寫到AOF緩衝區和AOF重寫緩衝區中,避免數據不一致的問題。