Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8169208
  • 博文数量: 595
  • 博客积分: 13065
  • 博客等级: 上将
  • 技术积分: 10334
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-26 16:44
个人简介

推荐: blog.csdn.net/aquester https://github.com/eyjian https://www.cnblogs.com/aquester http://blog.chinaunix.net/uid/20682147.html

文章分类

全部博文(595)

分类: 系统运维

2016-06-08 17:55:19

如果同时配置写AOF和RDB两种文件,但在redis启动时,只会加载AOF,除非配置只写RDB,才会加载RDB文件,也因此AOF文件必须是全量数据,所以会越来越大,这缺点也将是redis优化的一个方向,即AOF只保存相对于RDB的增量,这样AOF文件将大大减小。相关源码如下所示:

  1. int main(int argc, char **argv) {
  2.     。。。
  3.     if (!server.sentinel_mode) {
  4.         loadDataFromDisk(); // 从磁盘加载数据到内存
  5.     }
  6.     。。。
  7. }

  8. /* Function called at startup to load RDB or AOF file in memory. */
  9. void loadDataFromDisk(void) {
  10.     long long start = ustime();
  11.     if (server.aof_state == AOF_ON) {
  12.         // 加载AOF文件
  13.         if (loadAppendOnlyFile(server.aof_filename) == C_OK)
  14.             serverLog(LL_NOTICE,"DB loaded from append only file: %.3f seconds",(float)(ustime()-start)/1000000);
  15.     } else {
  16.         // 加载RDB文件
  17.         if (rdbLoad(server.rdb_filename) == C_OK) {
  18.             serverLog(LL_NOTICE,"DB loaded from disk: %.3f seconds",
  19.                 (float)(ustime()-start)/1000000);
  20.         } else if (errno != ENOENT) {
  21.             serverLog(LL_WARNING,"Fatal error loading the DB: %s. Exiting.",strerror(errno));
  22.             exit(1);
  23.         }
  24.     }
  25. }

阅读(3326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~