我正在探索 redis 来做 pub/sub。我想编写一个脚本,使用 redis-cli 订阅频道并将发布的任何内容转储到文件中。然而,我注意到的是 redis-cli 订阅频道 > 输出并不能正常工作。
我非常感谢任何帮助。
问候, 卡什亚普
我正在探索 redis 来做 pub/sub。我想编写一个脚本,使用 redis-cli 订阅频道并将发布的任何内容转储到文件中。然而,我注意到的是 redis-cli 订阅频道 > 输出并不能正常工作。
我非常感谢任何帮助。
问候, 卡什亚普
这是因为当 redis-cli 显示与订阅相关的消息时,没有自动刷新标准输出。因此,停止 redis-cli 之前的最后一条消息不会出现在输出文件中。
没有可用于强制执行系统刷新的选项,需要修补 redis-cli.c。在 Redis 源码中,编辑 src/redis-cli.c,找到如下代码。添加缺少的 fflush 行。
if (config.pubsub_mode) {
if (config.output != OUTPUT_RAW)
printf("Reading messages... (press Ctrl-C to quit)\n");
while (1) {
if (cliReadReply(output_raw) != REDIS_OK) exit(1);
// The following line must be added
fflush(stdout);
}
}
再次编译 redis-cli 后,它应该可以按预期工作。