2種AOF RDB RDB方式原理:當(dāng)redis需要做持久化時(執(zhí)行SAVA或者BGSAVA命令,或者是達(dá)到配置條件時執(zhí)行),redis會fork一個子進(jìn)程,子進(jìn)程將數(shù)據(jù)寫到磁盤上一個臨時RDB文件中,當(dāng)子進(jìn)程完成寫臨時文件后,將原來的RDB替換掉(默認(rèn)文件名為dump.rdb)
AOF方式原理:AOF可以做到全程持久化,Redis每執(zhí)行一個修改數(shù)據(jù)的命令,都會把這個命令添加到AOF文件中,當(dāng)Redis重啟時,將會讀取AOF文件進(jìn)行“重放”以恢復(fù)到Redis關(guān)閉前的最后時刻。
由于os會在內(nèi)核中緩存write做的修改,所以可能不是立即寫到磁盤上。
這樣aof方式的持久化也還是有可能會丟失部分修改。
不過我們可以通過配置文件告訴redis我們想要通過fsync函數(shù)強(qiáng)制os寫入到磁盤的時機(jī)。
兩者可以共存