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

Fragen zu Redis und Node.js und Socket.io

Daher sollte jeder "Benutzer" seinen eigenen Redis-Client innerhalb des Verbindungsereignisses haben. Habe ich recht?

Eigentlich bist du es nicht :)

Die Sache ist, dass node.js zum Beispiel sehr anders ist als PHP. node.js erzeugt bei neuen Verbindungen keine untergeordneten Prozesse, was einer der Hauptgründe dafür ist, dass es problemlos große Mengen gleichzeitiger Verbindungen verarbeiten kann, einschließlich langlebiger Verbindungen (Comet, Websockets usw.). node.js verarbeitet Ereignisse sequentiell mithilfe einer Ereigniswarteschlange innerhalb eines einzigen Prozesses. Wenn Sie mehrere Prozesse verwenden möchten, um die Vorteile von Multi-Core-Servern oder mehreren Servern zu nutzen, müssen Sie dies manuell tun (wie das geht, geht jedoch über den Rahmen dieser Frage hinaus).

Daher ist es eine absolut gültige Strategie, eine einzige Redis- (oder MySQL-) Verbindung zu verwenden, um eine große Anzahl von Clients zu bedienen. Dies vermeidet den Overhead des Instanziierens und Beendens einer Datenbankverbindung für jede Client-Anfrage.