内部应用
server.commands 服务器的命令列表
初始化命令列表
调用路径: >main -> initServerConfig -> populateCommandTable
其中,server.commands存储了譬如set/get等命令的执行函数指针;
客户端每次发送过来一个命令时候,readQueryFromClient入口一直根据redis通信协议处理,并把解析的参数存放在redisClient的argv数组中
struct redisCommand *lookupCommand(sds name) {
return dictFetchValue(server.commands, name);
}
通信协议简单如下:
*<参数数量> CR LF
$<参数 1 的字节数量> CR LF
<参数 1 的数据> CR LF
...
$<参数 N 的字节数量> CR LF
<参数 N 的数据> CR LF