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

Abonnement mit nodejs und redis veröffentlichen (node_redis)

Ich weiß nicht, was Ihr Design ist, aber Sie können mit einem Redis-Client mehrere Kanäle abonnieren (nachdem Sie sich mit Client abonniert haben, können Sie innerhalb dieser Verbindung nur andere Kanäle abonnieren oder abbestellen:http://redis.io/commands /subscribe), denn nachdem Sie eine Nachricht erhalten haben, haben Sie alle Informationen, von welchem ​​Kanal diese Nachricht stammt. Dann können Sie diese Nachricht an alle interessierten Kunden weitergeben.

Das hat mir ein wenig geholfen, weil ich den Nachrichtentyp in den Kanalnamen einfügen und dann dynamisch eine Aktion für jede Nachricht aus einer kleinen Funktion auswählen konnte, anstatt für jeden Kanal ein separates Abonnement mit separater Logik zu generieren.

In meinem node.js-Server habe ich nur 2 Redis-Clients:

  1. einfacher Client für alle Standardaktionen - lpush , sadd und so weiter
  2. Abonnement-Client - der auf Nachrichten über abonnierte Kanäle wartet, dann werden diese Nachrichten unter Verwendung des ersten Redis-Clients an alle Sitzungen verteilt (als Sätze für jeden Kanaltyp gespeichert).