1.RDB(Redis DataBase):保存某個時間點的全量數(shù)據(jù)快照
以快照的形式將進(jìn)程數(shù)據(jù)持久化到硬盤,RDB創(chuàng)建一個經(jīng)過壓縮的二進(jìn)制文件,以“.rdb”結(jié)尾,內(nèi)部存儲了各個數(shù)據(jù)庫的鍵值對數(shù)據(jù)等信息。(相當(dāng)于備份數(shù)據(jù)庫狀態(tài))
觸發(fā)方式:

子進(jìn)程記錄接受BGSAVE當(dāng)時的數(shù)據(jù)庫狀態(tài),父進(jìn)程繼續(xù)處理接受到的命令,子進(jìn)程完成文件創(chuàng)建之后發(fā)送信號給父進(jìn)程,父進(jìn)程處理命令的同時,通過輪詢來接受子進(jìn)程的信號

檢查是否存在RDB/AOF的子進(jìn)程存在,若存在,則直接返回
若不存在,則觸發(fā)持久化,調(diào)用rdbSaveBackground方法執(zhí)行fork()系統(tǒng)調(diào)用創(chuàng)建子進(jìn)程,fork后,父進(jìn)程響應(yīng)其他命令,子進(jìn)程創(chuàng)建.rdb文件,并存儲父進(jìn)程內(nèi)存中的數(shù)據(jù)。
父進(jìn)程得到通知,以新文件替換舊的.rdb文件

2.AOF(Append Only File)
以獨立日志的方式,記錄了每次寫入命令,重啟時再重新執(zhí)行AOF文件中的命令來恢復(fù)數(shù)據(jù)(備份接受到的指令)


3.RDB和AOF優(yōu)缺點

5.RDB-AOF混合持久化方式
先以RDB格式寫入全量數(shù)據(jù),再追加增量數(shù)據(jù)

Redis實例重啟時,使用BGSAVE持久化文件重新構(gòu)建內(nèi)容,再使用AOF重放近期的操作指令,實現(xiàn)完整恢復(fù)重啟之前的狀態(tài)