hset user:1 score 100
hset user:2 socre 101
hset user:3 score 200
hset user:4 score 201
要找出socre最高的user,应该如何设计。
天蓬老师2017-04-22 09:01:10
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 の使用を検討してください。
PHPz2017-04-22 09:01:10
そういう意味なのかは分かりません
コードをアップロードするだけです
ドキュメント
http://redis.cn/commands/sort.html
黄舟2017-04-22 09:01:10
ハッシュはソートできません。
並べ替える必要がある場合は、ZSET 操作を使用してください、ZADD SCORES メンバー
アイデアは次のとおりです:
リーリーもう一度言いますが、ハッシュがハッシュキーを保存するためにのみ使用されている場合、スコアをこのように保存することはお勧めできません..