1. 程式人生 > >redis只加載AOF檔案

redis只加載AOF檔案

如果同時配置寫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);
        }
    }
}