Frage

Ich bin daran interessiert, Node.js als Socket-Server für Stream-basierte Kommunikation mit Zehntausenden von Clients zu verwenden. Clients senden Stimmen für bestimmte Inhalte und erhalten nahezu Zeitaktualisierungen der aggregierten Abstimmung vom Server.

Der Datenspeicher muss unterstützen:

  1. Die Stimmen speichern
  2. Zusammenfassung der Stimmen in der Nähe von Real Time
  3. Verhinderung mehrerer Stimmen innerhalb eines willkürlichen Zeitraums (z. B. Kunden können alle 1 Minute nur einmal für einen Inhalt stimmen)

Etwas, das bereits Client -Bibliotheken für node.js hat, wäre vorzuziehen.

War es hilfreich?

Lösung

Ich würde sehr empfehlen Redis. Es ist ein Schlüssel-/Wertspeicher mit Set- und Listenvorgängen. Es unterstützt auch Atomoperationen für Zähler. Es gibt einen Client für Redis für node.js auf Github. So würde ich Ihre Funktionen implementieren:

Die Stimmen speichern

INCR votes:option:<option>

Zusammenfassung der Stimmen

MGET votes:option:<option1> votes:option:<option2> ... votes:option:<optionN>

Verhinderung mehrerer Stimmen (Erstellen Sie einen ablaufenden Sperrschlüssel für die Kunden -IP)

EXPIRE lock:<encoded ip> 60
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top