redis 复制笔记 - 2019.09
redisClient 中有输入输出缓冲区 输入缓冲区:命令处理器将用户输入的命令写入客户端输入缓冲区,该缓冲区可动态扩展,但最大不能超过 1G ,否则服务器将关闭客户端; 输出缓冲区:命令执行器将命令执行生成的回复写入输出缓冲区,并关联回复响应处理器,待客户端产生可写事件时,回复响应处理器将输出缓冲区的内容发送给客户端,并清空输出缓冲区; 输入缓冲区的内容被解析后,生成命令、参数等信息,存入redisClient中的argv数组,并记录数组长度,以待后续命令检查及执行; serverCron(时间事件,默认每隔100ms执行一次): 更新服务器时间:unixtime/mstime(s/ms),默认100ms; 更新lru_time:默认10s; 更新服务器每秒执行命令数(大概值,取1ms次数乘以1000为一次样本,默认取16次样本平均值); 处理sigterm信号(不带参数的kill):redisServer.asap状态,serverCron每次执行,都将检测该标识,为1时,将关闭服务器,且关闭前将进行持久化操作; 管理客户端资源:每次serverCron都执行,释放过期客户端及清理客户端输入缓冲区; 管理数据库资源:每次都调用databaseCron,随机处理一部分数据的过期键,并在需要时,对字典(键空间)进行收宿操作; bgrewriteaof:redisServer