1. 程式人生 > >redis中資料的持久化

redis中資料的持久化

redis中資料的持久化分為兩種:1.rdb,2.aof

1.rdb

  在指定的時間內將記憶體中的資料集快照寫入磁碟,恢復時,直接將快照檔案讀取到記憶體中。

  rdb儲存的是dump.rdb檔案(預設)。

  在redis配置檔案中可以設定儲存的檔名稱,以及每次更新檔案的間隔時間

如果在開發過程中遇到非常重要的資料想要立刻快照到檔案中,則使用save命令(同步,其他先阻塞)或者bgsave命令(非同步)即可

2.aof

  以日誌的形式來記錄每個操作,將redis執行過的所有指令記錄下來,aof預設儲存的時候appendonly.aof檔案,要開啟aof則需要設定redis.conf配置檔案中的appendonly 為yes

  如果aof檔案有損壞,可以使用redis-check-aof --fix進行修復

  aof開啟後,當redis重啟時會優先執行aof檔案來恢復資料

 AOF採用檔案追加方式,檔案會越來越大為避免出現此種情況,新增了重寫機制,當AOF檔案的大小超過所設定的閾值時,Redis就會啟動AOF檔案的內容壓縮,只保留可以恢復資料的最小指令集.可以使用命令bgrewriteaof

AOF檔案持續增長而過大時,會fork出一條新程序來將檔案重寫(也是先寫臨時檔案最後再rename),遍歷新程序的記憶體中資料,每條記錄有一條的Set語句。重寫aof檔案的操作,並沒有讀取舊的aof檔案,而是將整個記憶體中的資料庫內容用命令的方式重寫了一個新的aof檔案,這點和快照有點類似

Redis會記錄上次重寫時的AOF大小,預設配置是當AOF檔案大小是上次rewrite後大小的一倍且檔案大於64M時觸發