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