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