Redis持久化RDB快照在默認情況下,Redis將內(nèi)存數(shù)據(jù)庫快照保存到dump.rdb的二進制文件中,。
除了在配置文件中使用save關(guān)鍵字設(shè)置RDB快照,,還可以在命令行中手動執(zhí)行命令生成RDB快照,進入redis客戶端執(zhí)行命令save或bgsave可以生成dump.rdb文件,。 AOF(append only file)快照功能并不是非常durable,,如果redis因為某些原因而造成故障停機,,那么服務(wù)器將丟失最近寫入且未保存到快照中的那些數(shù)據(jù)。從1.1版本,,redis增加了一種完全durable的方式:AOF持久化,,將修改的每一條指令記錄進appendonly.aof中。修改配置文件來打開aof功能:
打開aof功能,,每當redis執(zhí)行一個改變數(shù)據(jù)集的命令時,,這個命令就會追加到aof文件的末尾。這樣的話,,當redis重新啟動時,,程序就會通過執(zhí)行aof文件中的命令來達到重建數(shù)據(jù)集的目的。
默認情況下 ,,每秒執(zhí)行一次fsync,, 這種fsync策略可以兼顧安全性和速度。 redis啟動時如果既有rdb文件又有aof文件則優(yōu)先選擇aof文件恢復數(shù)據(jù),因為aof文件一般來說數(shù)據(jù)更安全一點,。 二,、AOF重寫
當然aof還可以手動重寫,進入redis客戶端執(zhí)行命令bgrewriteaof重寫aof,。 Redis 4.0混合持久化重啟redis恢復數(shù)據(jù)集時,,很少會使用rdb來恢復內(nèi)存狀態(tài),因為會丟失大量數(shù)據(jù),。通常會使用aof日志恢復數(shù)據(jù),,但是重放aof日志性能相對rdb來說要慢很多,這樣在redis實例很大的情況下,,啟動需要花費很長時間,。Redis4.0為了解決這個問題,帶來了新的持久化選項——混合持久化,。
混合持久化aof文件結(jié)構(gòu): 如果開啟了混合持久化,,aof在重寫時,不再是單純將內(nèi)存數(shù)據(jù)轉(zhuǎn)換為RESP命令寫入aof文件,,而是將重寫這一刻之前的內(nèi)存做rdb快照處理,,并且將rdb快照內(nèi)容和增量的aof修改內(nèi)存數(shù)據(jù)的命令存在一起,都寫入新的aof文件,,新的aof文件一開始不叫appendonly.aof,,等到重寫完成后,新的aof文件才會進行改名,,原子的覆蓋原有的aof文件,完成新舊兩個aof文件的替換,。
|
|
來自: 新進小設(shè)計 > 《待分類》