redis的持久化
redis的持久化方式
- RDB - 默認(rèn)
快照 - 將redis當(dāng)前瞬間的內(nèi)存結(jié)構(gòu)記錄并且保存到硬盤上
- aof - 默認(rèn)關(guān)閉
(append only file) - 記錄所有redis執(zhí)行的寫命令, 當(dāng)需要回復(fù)數(shù)據(jù)時, 重放這些寫命令
相關(guān)配置
快照的相關(guān)的命令
save - 手動執(zhí)行一個前臺快照, 由當(dāng)前主線程執(zhí)行快照, 在快照的過程當(dāng)中, 不能執(zhí)行任何命令
bgsave - 手動執(zhí)行一個后臺快照, 會開啟一個新的線程進(jìn)行快照操作, 但是開發(fā)者沒辦法獲得快照的結(jié)果
配置
快照的執(zhí)行頻率, 相當(dāng)于沒多少秒執(zhí)行一次
save 900 1
save 300 10
save 60 10000當(dāng)bgsave錯誤時, 前臺是否需要停止寫入操作
stop-writes-on-bgsave-errors yes配置快照文件的名字
dbfilename dump.rdb配置是否開啟aof
appendonly no - 默認(rèn)關(guān)閉配置aof的文件名稱
appendfsync always - 沒執(zhí)行一個寫命令, 就記錄一次
appendfsync everysec - 默認(rèn)行為, 每秒記錄當(dāng)前這一秒所有的寫命令
appendfsync no - 根據(jù)操作系統(tǒng)的配置決定什么時候執(zhí)行配置aof文件的重寫的策略
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
AOF文件的優(yōu)化策略:
aof文件實(shí)際上會有很多無意義的寫操作, 比如添加一個數(shù)據(jù)后又刪除該數(shù)據(jù), 因此需要對aof文件進(jìn)行優(yōu)化, 這個可以用重寫命令.
Bgrewriteaof命令 - 手動觸發(fā)后臺對aof文件的重寫, 重寫后會得到一個體積優(yōu)化版, reids會自動的觸發(fā)aof文件重寫.
快照和aof的選擇策略
1风题、開發(fā)工程中漱挎, aof往往比快照更安全, AOF最多會丟失1s以內(nèi)的數(shù)據(jù)
2状知、redis服務(wù)開啟后谜洽, 先根據(jù)AOF文件恢復(fù)數(shù)據(jù)猬仁,再恢復(fù)快照的數(shù)據(jù)
3靶病、當(dāng)數(shù)據(jù)量很大時溃睹, 快照恢復(fù)的速度要快與AOF
4震肮、如果希望數(shù)據(jù)相對更安全称龙, 官方推薦同時開啟快照和AOF, 但是仍然不能保證數(shù)據(jù)的絕對安全
5戳晌、如果redis僅僅只是作為分布式緩存服務(wù)器使用鲫尊, 快照和AOF都可以關(guān)閉