修改redis源码自定义hello-world命令

在前述文章里,我有总结过Redis命令执行的大概过程,现在我们根据这个过程来实现一个hello命令返回world结果

前面的部分可以和系统共用,从processCommand开始

一、要声明一个命令,以便lookupCommand查找到
在server.c 127行有redisCommandTable的定义,在75行到126行有它的定义解释
在240行找到ping命令的定义,对照编辑一行hello命令
{"ping",pingCommand,-1,"tF",0,NULL,0,0,0,0,0},
{"hello",helloCommand,1,"lt",0,NULL,0,0,0,0,0}

二、在server.h声明helloCommand的命令类别函数
pingCommand的定义在1936行,在这个模块末尾加上hellocommand的声明即可
void helloCommand(client *c);

三、编写hello命令的函数
server.c 2910到2931行有ping的命令

void pingCommand(client *c) {
if (c->argc == 1)
addReply(c,shared.pong);
}

返回的shared.pong是前面讲到的共享对象,共享对象的源码在server.h的782行
在共享对象里新增world信息 *world
并在createSharedObjects函数里新增 *world返回结果 server.c 1435行
shared.pong = createObject(OBJ_STRING,sdsnew("+PONG\r\n"));


void helloCommand(client *c) {
if (c->argc == 1)
addReply(c,shared.hello);
}

四、编译并缺省启动Redis-server

make PREFIX=/app/zhouqw/src/redis-5.0.4/ install  

 

[root@node202 bin]# pwd
/app/zhouqw/src/redis-5.0.4/bin

[root@node202 ~]# ./redis-server &



 

posted @ 2020-11-30 23:13  洲渚皓月掩映  阅读(257)  评论(0编辑  收藏  举报