1、RDB文件內(nèi)容是經(jīng)過(guò)壓縮的二進(jìn)制數(shù)據(jù)(不同數(shù)據(jù)類(lèi)型數(shù)據(jù)做了針對(duì)性優(yōu)化),文件很小。而AOF文件記錄的是每一次寫(xiě)操作的命令,寫(xiě)操作越多文件會(huì)變得很大,其中還包括很多對(duì)同一個(gè)key的多次冗余操作。在主從全量數(shù)據(jù)同步時(shí),傳輸RDB文件可以盡量降低對(duì)主庫(kù)機(jī)器網(wǎng)絡(luò)帶寬的消耗,從庫(kù)在加載RDB文件時(shí),一是文件小,讀取整個(gè)文件的速度會(huì)很快,二是因?yàn)镽DB文件存儲(chǔ)的都是二進(jìn)制數(shù)據(jù),從庫(kù)直接按照RDB協(xié)議解析還原數(shù)據(jù)即可,速度會(huì)非??欤鳤OF需要依次重放每個(gè)寫(xiě)命令,這個(gè)過(guò)程會(huì)經(jīng)歷冗長(zhǎng)的處理邏輯,恢復(fù)速度相比RDB會(huì)慢得多,所以使用RDB進(jìn)行主從全量復(fù)制的成本最低。
2、假設(shè)要使用AOF做全量復(fù)制,意味著必須打開(kāi)AOF功能,打開(kāi)AOF就要選擇文件刷盤(pán)的策略,選擇不當(dāng)會(huì)嚴(yán)重影響Redis性能。而RDB只有在需要定時(shí)備份和主從全量復(fù)制數(shù)據(jù)時(shí)才會(huì)觸發(fā)生成一次快照。而在很多丟失數(shù)據(jù)不敏感的業(yè)務(wù)場(chǎng)景,其實(shí)是不需要開(kāi)啟AOF的。