首页 > 解决方案 > 为从 redis-cli 中的外部 redis 模块加载的新命令添加帮助文档

问题描述

redis-cli 中有关命令的帮助存储在redis/src/help.h.

我想为通过 redis 模块(使用 loadmodule)加载的命令提供帮助。我可以从Redis Modules中找到相关信息:API 简介

你有什么建议吗?

标签: redis

解决方案


我做了检查redis/src/redis-cli.c,帮助是在编译时创建的。目前没有可能这样做。

static void cliInitHelp(void) {
    int commandslen = sizeof(commandHelp)/sizeof(struct commandHelp);
    int groupslen = sizeof(commandGroups)/sizeof(char*);
    int i, len, pos = 0;
    helpEntry tmp;

    helpEntriesLen = len = commandslen+groupslen;
    helpEntries = zmalloc(sizeof(helpEntry)*len);

    for (i = 0; i < groupslen; i++) {
        tmp.argc = 1;
        tmp.argv = zmalloc(sizeof(sds));
        tmp.argv[0] = sdscatprintf(sdsempty(),"@%s",commandGroups[i]);
        tmp.full = tmp.argv[0];
        tmp.type = CLI_HELP_GROUP;
        tmp.org = NULL;
        helpEntries[pos++] = tmp;
    }

    for (i = 0; i < commandslen; i++) {
        tmp.argv = sdssplitargs(commandHelp[i].name,&tmp.argc);
        tmp.full = sdsnew(commandHelp[i].name);
        tmp.type = CLI_HELP_COMMAND;
        tmp.org = &commandHelp[i];
        helpEntries[pos++] = tmp;
    }
}

Redis 模块开发人员不应该将他们的模块命令文档写在redis/src/help/h. 我建议如下:

  1. 使用新的 Module API 函数,模块开发人员将新的命令文档(由命令语法、摘要、since、组组成)注册到系统哈希中。

  2. redis-cli从系统哈希中读取额外的命令文档,以填充helpEntries[].


推荐阅读