redis-cli中有关命令的帮助存储在redis/src/help.h
中。
我想为通过redis模块(使用loadmodule)加载的命令提供帮助。我可以从Redis Modules: an introduction to the API
中找到相关信息您有什么建议吗?
答案 0 :(得分:1)
我对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
中编写其模块命令文档。我建议如下:
使用新的Module API函数,模块开发人员将新的命令文档(包括命令语法,摘要,开始,分组)注册到系统哈希中。
redis-cli
从系统哈希读取其他命令文档,以填充helpEntries[]
。