• 修改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 "));


    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 &



  • 相关阅读:
    新概念英语(第一册)Lesson 1
    第七篇、Python之模块/包
    解压序列
    eval函数
    python--magic module 文件类型识别
    MIME_type
    彻底删除git中的文件(包括历史提交记录)
    for循环与range()函数
    Linux 内核的 Makefile
    Python module ---- abc
  • 原文地址:https://www.cnblogs.com/chou1214/p/14065547.html
Copyright © 2020-2023  润新知