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