これは、redis-cliがサブスクリプションに関連付けられたメッセージを表示するときにstdoutの自動フラッシュがないためです。そのため、redis-cliを停止する前の最後のメッセージは出力ファイルに表示されません。
体系的なフラッシュを強制するために使用できるオプションはありません。redis-cli.cにパッチを適用する必要があります。 Redisソースコードで、src / redis-cli.cを編集し、次のコードを見つけます。不足しているフラッシュラインを追加します。
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が再度コンパイルされると、期待どおりに機能するはずです。