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