Това е така, защото няма автоматично изтриване на stdout, когато redis-cli показва съобщенията, свързани с абонамента. Така че последните съобщения преди спирането на redis-cli не се появяват в изходния файл.
Няма опция, която можете да използвате, за да наложите систематично изчистване, redis-cli.c трябва да бъде закърпен. В изходния код на Redis редактирайте src/redis-cli.c и намерете следната част от кода. Добавете липсващата линия за промиване.
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 бъде компилиран отново, той трябва да работи както се очаква.