Dit komt omdat stdout niet automatisch wordt gewist wanneer redis-cli de berichten weergeeft die aan het abonnement zijn gekoppeld. Dus de laatste berichten voordat redis-cli stopt, verschijnen niet in het uitvoerbestand.
Er is geen optie die u kunt gebruiken om een systematische flush af te dwingen, redis-cli.c moet worden gepatcht. Bewerk in de Redis-broncode src/redis-cli.c en zoek het volgende stukje code. Voeg de ontbrekende spoelregel toe.
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);
}
}
Zodra redis-cli opnieuw is gecompileerd, zou het moeten werken zoals verwacht.