4

Redisでは、スコアが x 未満のすべてのメンバーを取得する方法は? そして、そのタスクを実行する際の時間の複雑さはどのくらいになるでしょうか?

4

1 に答える 1

11

ZRANGEBYSCORE redis コマンドを使用できます。

例: スコアが 4 未満のメンバー

zadd myset 1 "one"
zadd myset 2 "two"
zadd myset 3 "three"
zadd myset 5 "five"
zadd myset 6 "six"

ZRANGEBYSCORE myset -inf 4

結果:

1) "one"
2) "two"
3) "three"

スコアが 4 より大きい場合も

ZRANGEBYSCORE myset 4 +inf

結果:

1) "five"
2) "six"

複雑さについては、redis のドキュメントによると O(log(N)+M) です。

編集:2番目の例

オンライン ゲームのスコアボードがあり、それを redis の並べ替えられたセットに保存するとします。次のコマンドは、このテストを作成します

zadd scoreboard 101 "John" 333 "Mary" 323 "Nick" 900 "Steve" 901 "Sam" 333 "Mike"

次のラウンドに進む資格があるのは、スコアが 330 未満のプレイヤーです。これらのプレイヤーを見つけるには、次のコマンドを実行します。

ZRANGEBYSCORE scoreboard -inf 330

2 人のプレイヤー (ジョンとニック) になります。

1) "John"
2) "Nick"

このコマンドをもう少し説明するには: ZRANGEBYSCORE: redis コマンド、ドキュメントを確認します。 スコアボード: 作成したソート済みセット -inf: コマンドの最低価格 330: コマンドの最高価格

これが行うことは、-infinite から 330 までのこの範囲内のすべてのメンバーを見つけることです。これは、330 以下のすべてのメンバーとして理解しています。

私が助けたことを願っています:)

于 2012-11-27T13:49:02.880 に答える