sql >> Databáze >  >> NoSQL >> Redis

Událost klíčového prostoru Redis se nespouští

Zapomněli jste předplatitelského klienta přihlásit k odběru konkrétního kanálu. Kromě toho, pokud chcete sledovat všechny události, musíte použít předplatné založené na vzoru.

Možná budete chtít udělat něco takového (nevyzkoušeno):

subscriber.on("pmessage", function (pattern, channel, message) {
    console.log("("+  pattern +")" + " client received message on " + channel + ": " + message);
    switch (channel) {
        // blah blah blah
        // ...
    }
});
subscriber.psubscribe(''__key*__:*')

Další informace naleznete v dokumentaci Redis a v příkladech node_redis.

Aktualizace:

Zde je příklad pro ilustraci rozdílu mezi předplatným kanálu a předplatným vzoru. Správné zpracování chyb je kvůli stručnosti vynecháno.

var redis = require("redis");

var client = redis.createClient('6379','127.0.0.1');
var subscriber1 = redis.createClient('6379','127.0.0.1');
var subscriber2 = redis.createClient('6379','127.0.0.1');

// First subscriber listens only to events occurring for key mykey
function S1(next) {
    subscriber1.on('message', function(channel, msg) {
        console.log( "S1: received on "+channel+" event "+msg )
    });
    subscriber1.subscribe( "[email protected]__:mykey", function (err) {
        next();
    });
}

// Second subscriber listens to events occuring for ALL keys
function S2(next) {
    subscriber2.on('pmessage', function(pattern,channel, msg) {
        console.log( "S2: received on "+channel+" event "+msg )
    });
    subscriber2.psubscribe( "[email protected]__:*", function (err) {
        next();
    });
}

// Do something with keys mykey and anotherkey
function do_something() {
    client.set("mykey","example", function( err ) {
        client.set("mykey", "another example", function( err ) {
            client.del("mykey", function( err ) {
                client.set("anotherkey","example", function( err ) {
                    client.del("anotherkey");
                });
            });
        });
    });
}

// Here we go
S1( function () {
    S2( function () {
        do_something();
    });
});

Výsledek tohoto skriptu je:

S1: received on [email protected]__:mykey event set
S2: received on [email protected]__:mykey event set
S2: received on [email protected]__:mykey event set
S1: received on [email protected]__:mykey event set
S1: received on [email protected]__:mykey event del
S2: received on [email protected]__:mykey event del
S2: received on [email protected]__:anotherkey event set
S2: received on [email protected]__:anotherkey event del

Můžete vidět, že první odběratel obdržel pouze události pro mykey, zatímco druhý odběratel přijímá události pro všechny klíče.




  1. Monitorování instancí MongoDB pomocí MongoDB Monitoring Service (MMS)

  2. Aktualizace MongoDB()

  3. Instalace Redis na Ubuntu 16.04/18.04

  4. Šest kritických součástí úspěšné správy dat