投票を獲得し、それらを集約するためのデータストア
-
22-09-2019 - |
質問
Node.jsを、数万人のクライアントとのストリームベースの通信のためのソケットサーバーとして使用することに興味があります。クライアントは、特定のコンテンツの票を送信し、サーバーから集約された投票集計の近くの時間更新を受信します。
データストアはサポートする必要があります。
- 投票を保存します
- ほぼリアルタイムの投票を要約します
- 任意の期間内に複数の票を防ぐことができます(たとえば、クライアントは1分ごとにコンテンツに1回しか投票できません)
node.jsのクライアントライブラリをすでに持っているものが望ましいでしょう。
解決
強くお勧めします Redis. 。セットとリスト操作を備えたキー/バリューストアです。また、カウンターの原子運転もサポートしています。 node.jsのredisのクライアントが利用可能になります github. 。これが私があなたの機能を実装する方法です:
投票を保存します
INCR votes:option:<option>
投票の要約
MGET votes:option:<option1> votes:option:<option2> ... votes:option:<optionN>
複数票の防止(クライアントIPの期限切れのロックキーを作成)
EXPIRE lock:<encoded ip> 60
所属していません StackOverflow