Redis6.x 服务端解析客户端请求参数的流程: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 as string re
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值