本文共 857 字,大约阅读时间需要 2 分钟。
如果同时配置写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);
- }
- }
- }
转载地址:http://wmwso.baihongyu.com/