redis 命令执行过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 命令执行过程相关的知识,希望对你有一定的参考价值。

参考技术A

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是分隔符。

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


以上是关于redis 命令执行过程的主要内容,如果未能解决你的问题,请参考以下文章

Redis 命令执行过程(下)

Redis 命令执行过程(上)

Redis 命令执行过程(上)

Redis 命令执行过程(下)

深入Redis命令的执行过程

redis | 十二redis之事务