archivio dati per catturare voti e loro aggregazione
-
22-09-2019 - |
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:
- Memorizzazione voti
- Riassumendo i voti in quasi in tempo reale
- 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.
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