字符串aof_buf与链表aof_rewrite_buf_blocks分别是追加AOF文件与rewrite AOF文件后处理差异数据的重要参数
initServerConfig函数对AOF参数的初始化及注释
server.aof_state = REDIS_AOF_OFF; //AOF文件是否开启 server.aof_fsync = REDIS_DEFAULT_AOF_FSYNC; //fsync策略,默认为每秒fsync server.aof_no_fsync_on_rewrite = REDIS_DEFAULT_AOF_NO_FSYNC_ON_REWRITE;//aof rdb子进程运行中是否支持fsync,即写入AOF文件后,将数据刷新到硬盘 server.aof_rewrite_perc = REDIS_AOF_REWRITE_PERC; //自动rewrite增量值 server.aof_rewrite_min_size = REDIS_AOF_REWRITE_MIN_SIZE; //AOF文件最小字节数 server.aof_rewrite_base_size = 0; //自动rewrite计算aof文件增量的基数,等于上一次aof文件的字节数 server.aof_rewrite_scheduled = 0; //rewrite任务计划,当客户端发送bgrewriteaof指令,如果当前rewrite子进程正在执行,那么将客户端请求的bgrewriteaof变为计划任务,待AOF子进程结束后执行rewrite server.aof_last_fsync = time(NULL); //最近fsync数据到硬盘时间 server.aof_rewrite_time_last = -1; //rewrite持续的时间 server.aof_rewrite_time_start = -1; //rewrite开始的时间 server.aof_lastbgrewrite_status = REDIS_OK; //rewrite后的状态 server.aof_delayed_fsync = 0; //延迟fsync到硬盘的次数 server.aof_fd = -1; //AOF文件描述符 server.aof_selected_db = -1; /* Make sure the first time will not match */ server.aof_flush_postponed_start = 0; //上次推迟fsync到硬盘的时间 server.aof_rewrite_incremental_fsync = REDIS_DEFAULT_AOF_REWRITE_INCREMENTAL_FSYNC;//rewrite AOF文件时是否采用增量式fsync
其中aof_current_size参数未初始化,该值的初始化在Server启动加载AOF文件数据时初始化。
小结
本文就是简单介绍Redis中有关AOF机制实现的相关参数的意义,方便对接下来AOF数据持久化机制的理解,AOF机制的实现比较复杂,大致分为Server启动加载AOF文件数据、将新的数据追加到AOF文件中、自动rewrite AOF文件、客户端请求BGREWRITEAOF指令四个部分,下面的博客将介绍这三个部分的实现。