Verbindung zwischen node.js und redis

L

Lightstorm

Foren As
Ich entwickle eine Anwendung mit node.js und redis als Datenbank.
Die Kommunikation zwischen den beiden funktioniert über eine TCP Verbindung.

Auf der Anwendung gibt es User Aktivitäten die ein Datenbankzugriff erfordern. Dabei ist jeder User über eine bleibende Websocket Verbindung mit der Anwendung verbunden, statt Ajax...
Und ich frage mich jetzt was am besten wäre bzw. ob es ein Unterschied macht wie node.js und redis kommunizieren.
Folgende Möglichkeiten:

1. Nach dem starten der node.js Anwendung, wird eine einzige Verbindung zu redis aufgebaut, gehalten und alle zukünftigen Zugriffe darüber abgewickelt.

2. Die Anwendung baut bei jedem Vorgang, das Datenbankzugriff erfordert. eine neue Verbindung zu redis auf. Ähnlich wie bei PHP Scripts die bei jedem Aufruf sich z.B. zu MySQL verbinden.

3. Es wird für jeden einzelnen User, der gerade angemeldet ist, eine eigene TCP Verbindung zu redis aufgebaut, das für die Dauer der Session genutzt wird. Dann gäbe es z.B. bei 200 angemeldeten Nutzern 200 persistente Verbindungen zu redis. Unsinn?


Ich habe ersteres gewählt, weil ich mir denke, das ständig neue TCP Verbindungen aufzubauen und viele zu verwalten, den Server stärker belasten oder zumindest unnötig sind. Ich frage mich nur, ob das auch so bleibt, wenn die Datenbankzugriffe in die Höhe schießen.
Kann es passieren, das bei sehr vielen DB Anfragen, die TCP Verbindung überlastet und alles langsamer wird?
Was wäre optimaler?
 
Zuletzt bearbeitet:
Hi Lightstorm,

deine erste Vermutung, war richtig. Eine ständige Verbindung über einen Socket oder über eine TCP-Verbindung ist wesentlich besser.
Wenn Anwendung und Redis auf einem Server laufen, so würde ich direkt über den localhost kommunizieren, da dort natürlich der Durschatz am größten ist.

Darüber hinaus gebe ich dir den Tipp, kein Redis als persistenten Storage einzusetzen, da Redis ein SPOF erzeugt. Du kannst natürlich mit verschiedenen mechanismen dies umgehen, die aber alle früher oder Später bei HA bzw Pacemaker landen.
Für solch einen Einsatz ist meiner Meiner meinung nach mongoDB oder aber RabbiqMQ eine wesentlich bessere Wahl.

Für AMQP gibt es inzwischen für alle gängigen Skripte auch Adaptoren, die das arbeiten damit sehr verweinfach. Die Cluster-Funktionalität von RabbitMQ ist auch nicht schlecht, vor allem da man RAM und Disc-Nodes realisieren kann.

Hoffe das war hilfreich

Greetz
 
Hi, danke das ist hilfreich.

redis und SPOF, die redis Cluster API ist noch in der Entwicklung und soll nach 2.6 erscheinen, mit Version 3. Hoffe mal das zieht sich nicht zu sehr hin. Immerhin ist die Daten Persistenz bei redis ja gegeben.

Ich bin da noch nicht so der große Kenner, mongoDB kenne ich, habs aber bisher nicht ausprobiert. RabbitMQ ist mir neu, sieht sehr interessant aus, schau ich mir auch mal an. Danke für die interessanten Hinweise.
 
Verbindung zwischen node js und redis

Willkommen hier im Forum.

Gibt es irgendeine Skizze oder sowas für die Verbindung zwischen PICAXE und PSP.
2,5V klingen auch sehr wenig, kenne aber die PSP Gegebenheiten jetzt nicht genau. Ein paar mehr Infos wären hilfreich.

Viele Grüße
Jörg
 
Zurück
Oben