MORERedisでランキング実装してみませんか2014.12.15初めましてプログラマの吉行と申します。今回はRedisのソート済みセット型について書きたいと思います。■Redisとはインメモリ型のKVSになります。レプリケーションにも対応しています。Redisで扱えるデータ構造は次のとおりです。通常でも用いるデータ構造をそのままRedisで表現でき要素の追加や削除、ソートなどの操作もコマンドで用意されています。■ソート済みセット型はどんなことが出来るか要素を追加、変更する度にスコアで自動的にソートしてくれるので、ランキングのような機能に使用するならとても使いやすいものとなります。バッチ処理等の集計が必要ないランキングが実装出来ます。■ランキングの取得についてソート済みセット型を使用すればRedisコマンドを使用するだけで順位が取得できます。降順で順位を取得ただし下記ような場合で順位を取得するとuser3=3位でuser4=4位となる。これはRedisには同率順位が無いためである。|同率順位を考慮した場合は、自分より大きいスコアの件数を取得し+1する事で順位が求められます。実際のRedisコマンドだとこんな感じになります。+inf取得した値に+1したのが順位となります。■ランキングを前半戦と後半戦で開催したいソーシャルゲームでは累計獲得ポイントで順位が決まるランキング形式のイベントが良く開催されていますが、そのイベントを前半部分と後半部分に分けたいと言った時はKeyを分ける事で簡単に対応できます。|後半戦のスコアを取得する時のRedisコマンドはこんな感じになります。user1この場合の取得スコアは10となります。後半戦スコアは前半戦スコアを含めてものとしたい場合は、前半戦から加算を行っていれば大丈夫です。ランキングを実装する際にRedisを検討してみてはいかがでしょうか。