当前位置:   article > 正文

Redis6.x 服务端解析客户端请求参数的流程:readQueryFromClient

readqueryfromclient

readQueryFromClient命令解析流程

  • 服务端接收到accept后建立连接,通过aeCreateFileEvent将监听处理函数readQueryFromClient到客户端socket(fd)绑定,等客户端有请求发生时,服务会回调readQueryFromClient函数进行请求的处理。(如果不清楚请求的连接,可以阅读下文章:Redis6.x io事件驱动模型)
  • 服务接收到客户端的请求,会通过redis的中的协议,进行字符解析,如果协议中开头是*开始,表示有多命令方式(如事务命令),否则的话,是普通的单命令;命令和参数都用sds的类型存储,并且保存在客户端c中。
  • 通过lookupCommand(c->argv[0]->ptr)函数进行redisCommand的查询,找到server.commands中对应的redis命令结构体redisCommand,保存在客户端c中。
  • 最后,call()函数调用客户端c保存的命令cmd(redisCommand)结构体中的proc函数。
    在这里插入图片描述
  • server.commands保存的dict字典数据(部分):
/**redisCommand结构体*/
struct redisCommand {
    char *name;
    redisCommandProc *proc;
    int arity;
    char *sflags;   /* Flags a
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/978333
推荐阅读
相关标签
  

闽ICP备14008679号