Question

Je suis intéressé à utiliser Node.js comme serveur de socket pour la communication basée sur les flux avec des dizaines de milliers de clients. Les clients enverraient votes pour les pièces particulières de contenu et de recevoir des mises à jour en temps quasi réel des décomptes de votes agrégés à partir du serveur.

Le datastore doit soutenir:

  1. Le stockage des votes
  2. Résumer les votes en temps quasi-réel
  3. Empêcher plusieurs voix dans une période de temps arbitraire (par exemple les clients ne peuvent voter qu'une seule fois pour un morceau de contenu chaque 1 minute)

Quelque chose qui a déjà les bibliothèques clientes pour Node.js serait préférable.

Était-ce utile?

La solution

Je recommande fortement Redis . Il est un magasin clé / valeur des opérations de réglage et la liste. Il prend également en charge les opérations atomiques pour les compteurs. Il y a un client pour Redis pour Node.js disponibles sur github . Voici comment je mettre en œuvre vos fonctions:

Stockage voix

INCR votes:option:<option>

Résumant les votes

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

Prévention votes multiples (créer une clé de verrouillage venant à échéance pour IP du client)

EXPIRE lock:<encoded ip> 60
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top