Redisで最後のスキーマをどのように実装しますか?可能ですか?
Redisはスキーマレスです 。必要なものをデータストレージアプローチと呼びましょう 。
考えられるアプローチの1つは、HSET
を使用することです。 またはHMSET
これらのJSONオブジェクトをidで追加します。idはキーです。 JSONテキストは値です 。このハッシュをusers:byid
と呼びます。 。
これが問題の最初の部分です。これで、IDでオブジェクトを取得できます。 。
次の問題は、ランキングと呼ばれる範囲のオブジェクトを取得することです。 。これを取得するには、ZADD
を使用してオブジェクトを並べ替えられたセットに保存する必要があります 。並べ替えられたセットは並べ替えられます スコアごとに、アイテムはスコアとともに保存されます 。ユースケースにぴったりです!
実際には、ソートされたセット全体にオブジェクトIDを格納します:
zadd users:byranking 10 1 5 2
...ここで10
はスコア(つまり、実際のランキング値)であり、1は id など。
では、ランキングでアイテムをフィルタリングするにはどうすればよいでしょうか。 ZRANGEBYSCORE
の使用 :
- 10を除く0〜10のランク付け。
zrangebyscore users:byranking 0 (10
- 10を含む0〜10のランク付け。
zrangebyscore users:byranking 0 10
いわゆるZRANGEBYSCORE
取得したユーザーのIDが表示されます。 JSONテキストを取得するにはどうすればよいですか? HMGET
の使用 :
HMGET users:byid 1 2
...これにより、 idを持つ両方のユーザーが取得されます 1
および2
、10
の場合 ランキングは包括的です。