Dzieje się tak, ponieważ nie ma automatycznego opróżniania standardowego wyjścia, gdy redis-cli wyświetla komunikaty powiązane z subskrypcją. Tak więc ostatnie komunikaty przed zatrzymaniem redis-cli nie pojawiają się w pliku wyjściowym.
Nie ma opcji, której można użyć do wymuszenia systematycznego opróżniania, redis-cli.c musi zostać załatany. W kodzie źródłowym Redis edytuj src/redis-cli.c i znajdź następujący fragment kodu. Dodaj brakującą linię spłukiwania.
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);
}
}
Po ponownym skompilowaniu redis-cli powinno działać zgodnie z oczekiwaniami.