Redis でランキング機能を実装する方法
Redisではランキング機能を実装するためにソート済みセット(Sorted Set)データ構造が一般的に利用されます。
一般的な実装方法は次のとおりです。
- 各ユーザーのスコアをソートセットのscore、ユーザーIDをソートセットのmemberとして追加します。
- ZADDコマンドを使ってユーザーのスコアとIDをソートセットに追加する
- ユーザーのスコアを増加させるにはZINCRBYコマンドを使用します。
- ZREVRANGEコマンドで最もスコアが高いユーザーを取得する。
- ZREVRANK コマンドを使用して、ユーザーのランキングを取得する。
- ZRANGEコマンドを使って、指定した順位範囲のユーザーを取得する。
- ZSCOREコマンドでユーザーのスコアを取得する。
以下に、一般的なコマンドの例を示します。
- 「user1」のユーザーIDのスコアを100に設定する:
- ZADD leaderboard 100 “user1”
- user1のスコアを10増やす
- ZINCRBY leaderboard 10 “user1”
- 得点上位10人のユーザーを取得する:
- ZREVRANGE leaderboard 0 9 WITHSCORES
- ユーザーIDが”user1″の順位を取得
- 「user1」のZREVRANKリーダーボード
- 順位を 1~10 のユーザー取得する:
- ZREVRANGE leaderboard 0 9
- ユーザーID「user1」のスコアを取得する:
- ZSCOREリーダーボード「user1」
一般的な実装を 1 つ示しているので、実際のニーズに応じて適切な調整や最適化を行う必要があることに注意してください。