Esto se debe a que no hay un vaciado automático de stdout cuando redis-cli muestra los mensajes asociados a la suscripción. Entonces, los últimos mensajes antes de detener redis-cli no aparecen en el archivo de salida.
No hay ninguna opción que pueda usar para hacer cumplir un vaciado sistemático, redis-cli.c debe parchearse. En el código fuente de Redis, edite src/redis-cli.c y busque el siguiente fragmento de código. Agregue la línea fflush que falta.
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 vez que redis-cli se haya compilado nuevamente, debería funcionar como se esperaba.