1. 程式人生 > 其它 >redis持久化配置:rdb和aof

redis持久化配置:rdb和aof

原文參考:https://www.cnblogs.com/xuwenjin/p/9876432.html

redis有兩種持久化方式:RDB和AOF。具體差別跟優缺點可參考redis資料的兩種持久化方式對比,本篇只介紹這兩種方式怎麼配置

RDB配置方式

預設情況下,是快照RDB的持久化方式,將記憶體中的資料以快照的方式寫入二進位制檔案中,預設的檔名是dump.rdb

redis.conf預設配置:

save 900 1
save 300 10
save 60 10000

配置含義:

900秒內,如果超過1個key被修改,則發起快照儲存

300秒內,如果超過10個key被修改,則發起快照儲存

60秒內,如果1萬個key被修改,則發起快照儲存

預設配置不方便看效果,可將快照頻率設大一點,在redis.conf中增加一行:

save 10 1

儲存後,啟動redis服務端和客戶端。在客戶端輸入命令:

輸入完,發現dump.rdb檔案的修改日期變了,並且redis服務端增加了儲存日誌:

接下來,重啟redis服務端和客戶端,看資料是否真的持久化了:

妥妥的~,說明使用RDB快照持久化成功了

AOF 配置方式

redis.conf預設配置:

appendonly no

配置檔案中的appendonly修改為yes,開啟AOF持久化。開啟後,啟動redis服務端,發現多了一個appendonly.aof檔案

使用AOF做持久化,每一個命令以 Redis 協議的格式來儲存,新命令會被追加到檔案的末尾。 Redis 還可以在後臺對 AOF 檔案進行重寫,使得 AOF檔案的體積不會超出儲存資料集狀態所需的實際大小。實際上,AOF持久化並不會立即將命令寫入到硬碟檔案中,而是寫入到硬碟快取,在接下來的策略中,配置多久來從硬碟快取寫入到硬碟檔案。所以在一定程度一定條件下,還是會有資料丟失,不過你可以大大減少資料損失

# appendfsync always
appendfsync everysec
# appendfsync no

配置含義:

always:每次操作都會立即寫入aof檔案中

everysec:每秒持久化一次(預設配置)

no:不主動進行同步操作,預設30s一次

當然always一定是效率最低的,個人認為everysec就夠用了,資料安全效能又高。Redis也允許我們同時使用兩種方式,再重啟redis後會從AOF中恢復資料,因為AOF比RDB資料損失小嘛

配置好後,啟動redis客戶端,輸入命令:

最後的flushall是清除所有的鍵值。開啟appendonly.aof檔案,可以看到:

去掉最後面的flushall(也可以按照redis協議增加命令),重啟客戶端和服務端,看資料是否真的持久化了:

妥妥的~,說明使用AOF持久化也成功了