redis可以对key排序吗
高洛峰
高洛峰 2017-04-22 08:59:10
0
4
865

hset user:1 score 100

hset user:2 socre 101

hset user:3 score 200

hset user:4 score 201

要找出socre最高的user,应该如何设计。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(4)
Peter_Zhu

hset を直接ソートすることはできません。 hset ソートと同等のことを実現する別の方法として、sort 関数を使用する方法があります。並べ替えは通常、リスト、セット、および zset のみを並べ替えることができますが、変更することができます。 sort の使用法は次のとおりです:
SORTキー [BYパターン] [LIMITオフセット数] [GETパターン [GETパターン...]] [ASC | DESC] [ALPHA] [STORE先]

byパラメータとstoreパラメータに注意してください。 by はどのフィールドで並べ替えるかを決定するために使用され、store は並べ替え結果をリストに保存できます。まず、すべてのハッシュ キーをセットに保存します。たとえば、このセットのキー名は myhashes です。次に、セット内の各要素 (つまり、各ハッシュ) のスコア フィールドに従って並べ替えて、最後に並べ替え結果を保存します。 in キー名が myresult のリスト内。ここでのソート結果は当然セット内の全要素のキー名(つまり全ハッシュキー)になります。 GETパラメータに#を付けることでセット内の全要素のキー名を取得できます。 :
myhash を *-> スコアでソート GET # STORE myresult

SORT は、BY パラメータの * を myhashes の各値 (つまり、各ハッシュ キー名) に置き換え、-> の後に指定されたフィールドに基づいてその値を取得し、最後にこれらのフィールドに基づいて myhashes の各値を比較します。値が並べ替えられます。このように、myresult にはスコアに従ってソートされたハッシュ キー名が含まれます。

最後に、ハッシュの設計に何か問題があると思います。ハッシュは SQL データベースの行に似ており、複数のフィールドがあり、各フィールドには対応する値があります。スコア フィールドしかない場合は、zset の使用を検討してください。

いいねを押す +0
黄舟

HashSet没法直接排。得单独维护一个SortedSet、ユーザー ID と対応するスコアのみが保存されます。

いいねを押す +0
PHPzhong

そういう意味なのかは分かりません
コードをアップロードするだけです

リーリー

ドキュメント
http://redis.cn/commands/sort.html

いいねを押す +0
黄舟

ハッシュはソートできません。

並べ替える必要がある場合は、ZSET 操作を使用してください、ZADD SCORES メンバー

アイデアは次のとおりです:

リーリー

もう一度言いますが、ハッシュがハッシュキーを保存するためにのみ使用されている場合、スコアをこのように保存することはお勧めできません..

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート