Redis ZREVRANGEBYLEXコマンドの使い方|辞書順降順で範囲指定してソート済みセットの要素を取得する方法
このチュートリアルでは、RedisのZREVRANGEBYLEXコマンドを使って、ソート済みセット(Sorted Set)から特定の範囲内の値を持つすべての要素を、辞書順の降順で取得する方法を解説します。
ZREVRANGEBYLEXコマンドとは
ZREVRANGEBYLEXコマンドは、指定したキーに保存されているソート済みセットの要素のうち、max引数とmin引数で指定された範囲(要素の文字列表現)に該当するすべての要素を返します。このコマンドを利用する際は、ソート済みセットのすべての要素を同じスコアで挿入し、辞書順(レキシコグラフィカル順)での並び替えを強制するのが前提となります。返される要素は、辞書順の降順で並べられます。
maxおよびmin引数は、必ず( または [ で始める必要があります。[ は閉区間(その値を含む)、( は開区間(その値を含まない)を意味します。
例えば、次のコマンドを実行すると:
ZREVRANGEBYLEX set [f [a
f >= 要素 >= a を満たすすべての要素が返されます。一方、次のコマンドの場合:
ZREVRANGEBYLEX set [f (a
f >= 要素 > a を満たすすべての要素が返されます。
また、maxとmin引数には特別な値である+や-を指定することもできます。+は正の無限大の文字列、-は負の無限大の文字列を表します。例えば、ZREVRANGEBYLEX set + - を実行すると、ソート済みセットのすべての要素が返されます。
さらに、オプションのLIMIT引数を渡すことで、offsetで指定した位置からcount個の一致する要素を取得できます。countに負の値を指定した場合は、offset以降のすべての要素が返されます。
例:
ZREVRANGEBYLEX set [f [a LIMIT 1 3 ※ set = [a, b, c, d, e, f, g, h] の場合
この場合、2番目に一致する要素から3つの要素、つまり [e, d, c] が返されます。
キーが存在しない場合は空のセットが返されます。また、キーは存在するものの、その値がソート済みセット型ではない場合はエラーが返されます。
構文
redis host:post> ZREVRANGEBYLEX <keyname> <max> <min> [LIMIT offset count]
出力
- (array) reply:指定範囲内のソート済みセットの要素を表す配列 - 空のセット:キーが存在しない場合 - エラー:キーは存在するが、保存されている値がソート済みセット型ではない場合
使用例

参考資料
- ZREVRANGEBYLEXコマンド公式ドキュメント
以上が、RedisのZREVRANGEBYLEXコマンドを使って、特定の範囲内の値を持つソート済みセットの要素を辞書順降順で取得する方法でした。この記事が役に立った場合は、ぜひコメント欄で感想を共有したり、他の方にもシェアしてください。
-
Redis ZREVRANGEBYSCOREコマンド徹底解説!スコア範囲を指定してソート済みセットの要素を降順で取得する方法
このチュートリアルでは、RedisのZREVRANGEBYSCOREコマンドを使用して、指定したスコア範囲内に含まれるソート済みセット(Sorted Set)の全要素を、スコアの降順で取得する方法を詳しく解説します。 ZREVRANGEBYSCOREコマンドとは ZREVRANGEBYSCOREコマンドは、引数として渡されたmax(最大値)以下かつmin(最小値)以上のスコアを持つ、ソート済みセット内のすべての要素を返します。要素はスコアの降順で返され、同一のスコアを持つ要素同士は辞書順の逆順(降順)で並べられます。 デフォルトではmaxとminは閉区間(境界値を含む)として扱われますが、値の
-
Redis ZRANGEBYSCOREコマンドの使い方 – スコア範囲を指定してソート済みセットの要素を昇順に取得する方法
このチュートリアルでは、RedisのZRANGEBYSCOREコマンドを使用して、指定したスコア範囲内にあるソート済みセット(sorted set)のすべての要素を、スコアの昇順で取得する方法について解説します。 ZRANGEBYSCOREコマンドとは ZRANGEBYSCOREコマンドは、引数として渡されたmin(最小値)以上かつmax(最大値)以下のスコアを持つ、ソート済みセット内のすべての要素を返します。返される要素はスコアの昇順に並べられ、同じスコアを持つ要素同士は辞書順(レキシコグラフィカル順)で昇順に配置されます。 デフォルトではminとmaxは閉区間(境界値を含む)として扱われま