redis - 为从 redis-cli 中的外部 redis 模块加载的新命令添加帮助文档
问题描述
redis-cli 中有关命令的帮助存储在redis/src/help.h
.
我想为通过 redis 模块(使用 loadmodule)加载的命令提供帮助。我可以从Redis Modules中找到相关信息:API 简介
你有什么建议吗?
解决方案
我做了检查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 函数,模块开发人员将新的命令文档(由命令语法、摘要、since、组组成)注册到系统哈希中。
redis-cli
从系统哈希中读取额外的命令文档,以填充helpEntries[]
.
推荐阅读
- linux - ArchLinux 上的 I2C 用户空间通信
- c++ - 如何使用嵌套初始化构造函数中的一维向量初始化矩阵?
- node.js - 如何在 Mongoose 中保存生日而不引发验证错误
- c - 为什么快速排序函数中的变量“q”在第一个过程(调用)后等于 7
- python - 我可以在 Pandas 中将 getattr 与方法链一起使用吗?
- python - 在 spaCy 中,有没有办法提取提取实体的句子?
- firebase - 收听对象数组流时出现问题来自firestore集合
- c - 回调未在编辑控件上触发
- gcc - 在 Solaris 10 SPARC 中编译 tsocks-1.8
- angular - 使用 NGINX + ANGULAR + Docker 的生产 SSL