redis 命令执行过程

有没有人在啊,想请问下,redis 命令执行过程
最新回答
月舞兮颜

2025-03-28 02:37:37

redis数据淘汰原理
redis过期数据删除策略
redis server事件模型
redis cluster mget 引发的讨论
redis 3.x windows 集群搭建
redis 命令执行过程
redis string底层数据结构
redis list底层数据结构
redis hash底层数据结构
redis set底层数据结构
redis zset底层数据结构
redis 客户端管理
redis 主从同步-slave端
redis 主从同步-master端
redis 主从超时检测
redis aof持久化
redis rdb持久化
redis 数据恢复过程
redis TTL实现原理
redis cluster集群建立
redis cluster集群选主

 这篇文章的目的是为了描述redis server在处理client命令的执行过程,大概包括流程图、源码、以及redis的命令格式说明,redis的通信协议参考自redis的 官网


 整个redis的server端命令执行过程就如下面这个流程图:



 nread = read(fd, c->querybuf+qblen, readlen);负责读取命令数,通过processInputBuffer进行下一步处理。


 核心在于processInlineBuffer处理内联命令,processMultibulkBuffer处理批量命令包括get/set等,核心的processCommand用于执行命令。


 执行命令的过程其实主要是寻找命令对应的执行函数,通过lookupCommand查找对应的执行命令,通过call执行命令。


 负责执行命令 c->cmd->proc 并更新统计信息,执行完成后负责同步数据 propagate


 主要是负责同步数据到AOF文件和slave节点,feedAppendOnlyFile负责同步到AOF文件,replicationFeedSlaves负责同步


 AOF涉及的缓存有多份,包括


 包含了命令和对应执行函数的映射关系,应该看上去很清晰命令。



协议的一般格式如下,注意前面的*或者$等字符,结尾的\r\n是分隔符。

其中, 回复中的第二个元素为空。