Redis
 sql >> Datenbank >  >> NoSQL >> Redis

So leiten Sie die Ausgabe des Redis-Abonnements um

Dies liegt daran, dass stdout nicht automatisch geleert wird, wenn redis-cli die dem Abonnement zugeordneten Nachrichten anzeigt. Daher erscheinen die letzten Meldungen vor dem Beenden von redis-cli nicht in der Ausgabedatei.

Es gibt keine Option, mit der Sie einen systematischen Flush erzwingen können, redis-cli.c muss gepatcht werden. Bearbeiten Sie im Redis-Quellcode src/redis-cli.c und suchen Sie den folgenden Codeabschnitt. Fügen Sie die fehlende bündige Zeile hinzu.

    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);
        }
    }

Sobald redis-cli erneut kompiliert wurde, sollte es wie erwartet funktionieren.