次のコラム Redis チュートリアル では、Redis を使用してランキング機能を実装する方法を紹介します。
#ランキング機能は非常に一般的な要求です。Redis の順序付きセットの機能を使用してランキングを実装することは、迅速で良い選択です。
「ユーザーポイント一覧」など総合的なランキングが効果的です。効果がなく、常に総合ランキングに基づいてランキングが行われる場合、常に古いユーザーが数名リストの上位に表示される可能性があり、新規ユーザーにとっては非常にイライラします。 まず、「今日のポイントリスト」を見てみましょう。ソートルールは、今日ユーザーが追加した新しいポイントの多い順です。 次に、ユーザーがポイントを追加すると、その日のポイントの増加を記録するオーダード セットを操作します。今日が 2015 年 4 月 1 日で、UID 1 のユーザーが特定の操作により 5 ポイントを獲得したとします。
Redis コマンドは次のとおりです:
ZINCRBY rank:20150401 5 1他の数人のユーザーもポイントを追加したと仮定します:
ZINCRBY rank:20150401 1 2 ZINCRBY rank:20150401 10 3現在の順序付きセットのランク:20150401 (withscores パラメーター) のデータを確認します。要素のスコアを取得します):
ZRANGE rank:20150401 0 -1 withscores
1) "2" 2) "1" 3) "1" 4) "5" 5) "3" 6) "10"スコアの高い順に上位 10 を取得します:
ZREVRANGE rank:20150401 0 9 withscores
1) "3" 2) "10" 3) "1" 4) "5" 5) "2" 6) "1"要素が 3 つしかないため、これらのデータがクエリされます。 その日のポイントランキング表を毎日記録していれば、その他のトリックの多いリストはシンプルになります。
例: 「昨日の順位」:
ZREVRANGE rank:20150331 0 9 withscores和集合を使用して複数日のポイントの合計を取得し、「先週の順位」を達成します:
ZUNIONSTORE rank:last_week 7 rank:20150323 rank:20150324 rank:20150325 rank:20150326 rank:20150327 rank:20150328 rank:20150329 WEIGHTS 1 1 1 1 1 1 1このように、 7 日間のポイントが記録され、順序付けされたセット Rank:last_week にマージされます。重み係数 WEIGHTS 指定しない場合、デフォルトは 1 です。内容を隠さないように、あえて書きました。
次に、先週の順位の上位 10 位の情報をクエリする場合は、次のようになります:
ZREVRANGE rank:last_week 0 9 withscores「Monthly List」、「Quarterly List」、「Annual List」など。
以上がRedisを使用してランキング機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。