Redis
 sql >> Database >  >> NoSQL >> Redis

Come reindirizzare l'output dell'abbonamento redis

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.