Ciò è dovuto al fatto che non viene eseguito lo svuotamento automatico di stdout quando redis-cli visualizza i messaggi associati all'abbonamento. Quindi gli ultimi messaggi prima dell'arresto di redis-cli non vengono visualizzati nel file di output.
Non c'è alcuna opzione che puoi usare per imporre un flush sistematico, redis-cli.c deve essere corretto. Nel codice sorgente Redis, modifica src/redis-cli.c e trova il seguente pezzo di codice. Aggiungi la riga fflush mancante.
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);
}
}
Una volta che redis-cli è stato nuovamente compilato, dovrebbe funzionare come previsto.