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

Redis-Keyspace-Benachrichtigungen mit StackExchange.Redis

Die reguläre Abonnenten-API sollte gut funktionieren - es gibt keine Annahmen zu Anwendungsfällen, und dies sollte gut funktionieren.

Ich stimme jedoch irgendwie zu, dass dies eine eingebaute Funktionalität ist, die vielleicht von Hilfsmethoden auf der API und vielleicht einer anderen Delegiertensignatur profitieren könnte - um die Syntax der Keyapace-Benachrichtigungen zu kapseln, damit die Leute sie nicht duplizieren müssen. Dafür:Ich schlage vor, dass Sie ein Problem protokollieren, damit es nicht vergessen wird.

Einfaches Beispiel zum Abonnieren eines Keyspace-Ereignisses

Zunächst ist es wichtig zu überprüfen, ob Redis-Keyspace-Ereignisse aktiviert sind. Beispielsweise sollten Ereignisse auf Schlüsseln des Typs Set aktiviert werden . Dies kann mit CONFIG SET erfolgen Befehl:

CONFIG SET notify-keyspace-events KEs

Sobald Keyspace-Ereignisse aktiviert sind, geht es nur noch darum, den Pub-Sub-Kanal zu abonnieren:

using (ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("localhost"))
{
    IDatabase db = connection.GetDatabase();
    ISubscriber subscriber = connection.GetSubscriber();

    subscriber.Subscribe("[email protected]__:*", (channel, value) =>
        {
            if ((string)channel == "[email protected]__:users" && (string)value == "sadd")
            {
                // Do stuff if some item is added to a hypothethical "users" set in Redis
            }
        }
    );
}

Erfahren Sie hier mehr über Keyspace-Ereignisse.