如何重定向Redis订阅的输出

我正在探索Redis做发布/订阅。我想编写一个脚本,该脚本使用redis-cli订阅频道并转储发布到文件的所有内容。但是我注意到的是redis-cli

subscripe channel>输出效果不佳。

非常感谢您的帮助。

问候,Kashyap

回答:

这是因为当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,它便会按预期工作。

以上是 如何重定向Redis订阅的输出 的全部内容, 来源链接: utcz.com/qa/413386.html

回到顶部