Это происходит потому, что нет автоматического румянец на стандартный вывод, когда Redis-консоли отображаются сообщения, связанные с подпиской. Поэтому последние сообщения перед остановкой 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 был скомпилирован снова, он должен работать должным образом.
Большое вам спасибо ... Я только что узнал из чата IRC, что я смог добиться такого же эффекта, запустив redis-cli, как этот «stdbuf -oL ./redis-cli ....» – Kashyap
Я сделал не думайте о stdbuf, но он должен работать: redis-cli действительно использует stdout очень классическим способом (без явной настройки буферов ввода-вывода). –