redis只加载AOF文件

本文探讨了Redis中AOF与RDB两种持久化方式的特点与区别。默认情况下,Redis启动时会优先加载AOF文件还原数据,除非配置为仅使用RDB。文章还提出了AOF文件优化方向,即只保存相对于RDB的增量更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果同时配置写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. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值