Redis ZREVRANGEBYSCOREコマンド徹底解説!スコア範囲を指定してソート済みセットの要素を降順で取得する方法
このチュートリアルでは、RedisのZREVRANGEBYSCOREコマンドを使用して、指定したスコア範囲内に含まれるソート済みセット(Sorted Set)の全要素を、スコアの降順で取得する方法を詳しく解説します。
ZREVRANGEBYSCOREコマンドとは
ZREVRANGEBYSCOREコマンドは、引数として渡されたmax(最大値)以下かつmin(最小値)以上のスコアを持つ、ソート済みセット内のすべての要素を返します。要素はスコアの降順で返され、同一のスコアを持つ要素同士は辞書順の逆順(降順)で並べられます。
デフォルトではmaxとminは閉区間(境界値を含む)として扱われますが、値の先頭に「(」を付けることで、開区間(境界値を除外する)として指定することも可能です。例を見てみましょう。
ZREVRANGEBYSCORE set (5 1
上記のコマンドは、スコアが「5未満かつ1以上」のすべての要素を返します。一方、次のように記述すると:
ZREVRANGEBYSCORE zset (10 (5
スコアが「10より小さく5より大きい」(5と10は両方除外)のすべての要素が返されます。
さらに、maxとminには+inf(正の無限大)や-inf(負の無限大)を指定することもできます。これにより、ソート済みセット内の最高スコアや最低スコアを事前に把握していなくても、「あるスコア以下のすべての要素」や「あるスコア以上のすべての要素」を簡単に取得できます。
オプション引数
RedisのZREVRANGEBYSCOREコマンドでは、次のオプション引数を利用できます。
- WITHSCORES: 各要素と一緒にそのスコアも一緒に返します。このオプションを付けた場合、戻り値の配列は「value1, …, valueN」ではなく「value1, score1, …, valueN, scoreN」という形式になります。
- LIMIT: offsetで指定した位置から始まるcount個の一致する要素を返します。countに負の値を指定した場合は、offset以降のすべての要素が返されます。
なお、キーが存在しない場合は空のセットが返されます。一方、キーは存在するものの、格納されている値がソート済みセット型ではない場合はエラーが返されるので注意してください。
構文
redis host:port> ZREVRANGEBYSCORE <keyname> <max> <min> [WITHSCORES] [LIMIT offset count]
出力
- (array) reply:指定したスコア範囲内のソート済みセットの要素を表す配列 - 空のセット:キーが存在しない場合 - エラー:キーは存在するが、格納されている値がソート済みセットではない場合
実行例

まとめ
以上が、Redisデータストアに保存されたソート済みセットから、特定のスコア範囲内の要素をスコアの降順ですべて取得する方法でした。WITHSCORESやLIMITなどのオプション引数を組み合わせることで、柔軟なデータ取得が可能になります。この記事が役に立ったと思ったら、ぜひコメント欄で感想をお聞かせください。また、周りの方へのシェアもお待ちしています。
-
Redis ZINCRBYコマンドの使い方 – Redisでソート済みセットの要素スコアをインクリメントする方法
このチュートリアルでは、Redisデータストアに保存されたソート済みセット(Sorted Set)型の値について、特定の要素のスコアをインクリメントする方法を学びます。この操作には、redis-cliでZINCRBYコマンドを使用します。 ZINCRBYコマンドは、キーに保存されているソート済みセットの値の中から指定した要素を探し、そのスコアを指定した値(increment)だけ増加させるために使用します。もし指定した要素がソート済みセット内に存在しない場合は、その要素が新しく追加され、指定したincrement値がスコアとして設定されます。また、キー自体が存在しない場合には、指定した要素のみ
-
Redis ZRANGEBYSCOREコマンドの使い方 – スコア範囲を指定してソート済みセットの要素を昇順に取得する方法
このチュートリアルでは、RedisのZRANGEBYSCOREコマンドを使用して、指定したスコア範囲内にあるソート済みセット(sorted set)のすべての要素を、スコアの昇順で取得する方法について解説します。 ZRANGEBYSCOREコマンドとは ZRANGEBYSCOREコマンドは、引数として渡されたmin(最小値)以上かつmax(最大値)以下のスコアを持つ、ソート済みセット内のすべての要素を返します。返される要素はスコアの昇順に並べられ、同じスコアを持つ要素同士は辞書順(レキシコグラフィカル順)で昇順に配置されます。 デフォルトではminとmaxは閉区間(境界値を含む)として扱われま