Domanda

Mi interessa utilizzando Node.js come server socket per la comunicazione basato sul flusso, con decine di migliaia di clienti. I clienti invieranno voti per particolari pezzi di contenuto e la ricezione di vicino-aggiornamenti in tempo reale su conteggi voto aggregati dal server.

L'archivio dati deve sostenere:

  1. Memorizzazione voti
  2. Riassumendo i voti in quasi in tempo reale
  3. Prevenire voti multipli entro un periodo di tempo arbitrario (ad esempio, i clienti possono votare solo una volta per un pezzo di contenuto ogni 1 minuto)

Una cosa che ha già librerie client per Node.js sarebbe preferibile.

È stato utile?

Soluzione

Mi raccomando Redis . Si tratta di un negozio chiave / valore con le operazioni di set e di elenco. Supporta inoltre le operazioni atomiche per i contatori. V'è un client per Redis per Node.js disponibili su github . Ecco come vorrei implementare le vostre caratteristiche:

Memorizzazione voti

INCR votes:option:<option>

che riassume i voti

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

Prevenire voti multipli (creare un tasto di blocco in scadenza per il client IP)

EXPIRE lock:<encoded ip> 60
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top