この記事は、redis に関する関連知識を提供します。主に、redis の多次元ランキングの考え方を共有します。興味のある友人は、一緒に見てみることができます。皆さんのお役に立てれば幸いです。
#問題の説明
- #誰もが知っているように、redis zset はランキングでよく使用されており、すぐに使用できますが、一次元のランキングしかサポートしていないという欠点があります。
- しかし、実際のプロジェクトでは、一次元のランキングは実際には非常に現実的ではありません。簡単な例としては、ウォーキング ランキングが挙げられます。製品の要件は、歩数、完了数に基づいてランク付けおよび並べ替えることです。左から時刻、人物名が優先されます。
私の解決策は、すべての次元を数値に変換し、これらの次元の数値を加算して、多次元のランキングを解決できるようにすることです。 -
#具体的な解決策のアイデア
ステップ数: 本来は数値なので無視できます-
完了時間: 完了時間には通常タイムスタンプが格納されており、タイムスタンプが遅いほど値が大きくなります。完了時間が早いほど上位にランクされるようにするため、時間が早いほど、値は大きくなります。より大きなタイムスタンプからユーザーの完了時刻のタイムスタンプを引くことができるため、完了時間が早ければ早いほど、その値は大きくなります。
- 人名: 一般に人名は漢字または文字で構成されます。漢字も文字も文字列です。並べ替える場合、最初のステップは文字列を数値に変換することです。このプロセスには PHP を使用することをお勧めします。ネイティブ関数
- mb_ord
。
たとえば、ユーザーの歩数が 10,000、完了時間 (計算後) が 100,000 (タイムスタンプはランダムに書き込まれます)、人物の名前が 500 (計算後) であるとします。は Zhang San (ランダムに書かれています) )、10000.100500 (歩数、完了時間、人物名を合計した値) の値を取得できます。
- 実際の値の取得処理では、小数点を削除することができますが、小数点以下の数値は順位付けにのみ使用されます。
-
推奨学習: 「
Redis ビデオ チュートリアル 」
以上がRedis の多次元ランキングのアイデアを共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。