redis只加載AOF檔案
阿新 • • 發佈:2019-01-23
如果同時配置寫AOF和RDB兩種檔案,但在redis啟動時,只會載入AOF,除非配置只寫RDB,才會載入RDB檔案,也因此AOF檔案必須是全量資料,所以會越來越大,這缺點也將是redis優化的一個方向,即AOF只儲存相對於RDB的增量,這樣AOF檔案將大大減小。相關原始碼如下所示:
int main(int argc, char **argv) { 。。。 if (!server.sentinel_mode) { loadDataFromDisk(); // 從磁碟載入資料到記憶體 } 。。。 } /* Function called at startup to load RDB or AOF file in memory. */ void loadDataFromDisk(void) { long long start = ustime(); if (server.aof_state == AOF_ON) { // 載入AOF檔案 if (loadAppendOnlyFile(server.aof_filename) == C_OK) serverLog(LL_NOTICE,"DB loaded from append only file: %.3f seconds",(float)(ustime()-start)/1000000); } else { // 載入RDB檔案 if (rdbLoad(server.rdb_filename) == C_OK) { serverLog(LL_NOTICE,"DB loaded from disk: %.3f seconds", (float)(ustime()-start)/1000000); } else if (errno != ENOENT) { serverLog(LL_WARNING,"Fatal error loading the DB: %s. Exiting.",strerror(errno)); exit(1); } } }