Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Redis ZRANGEBYLEXコマンドの使い方 – 辞書順(昇順)で指定範囲内のソート済みセット要素を取得する

このチュートリアルでは、RedisのZRANGEBYLEXコマンドを使って、ソート済みセット(Sorted Set)に格納された要素のうち、指定した範囲内の値を持つものを、辞書順(レキシコグラフィカル順)の昇順ですべて取得する方法を解説します。

ZRANGEBYLEXコマンドとは

ZRANGEBYLEXコマンドは、指定したキーに保存されているソート済みセットの要素のうち、min(最小値)とmax(最大値)の引数で指定した範囲に含まれる要素(文字列表現)をすべて返します。このコマンドを使用する際は、ソート済みセットのすべての要素に同じスコアを設定しておく必要があります。同じスコアにすることで、Redisが要素を辞書順に強制的に並べる仕組みになっています。返される要素は、必ず昇順の辞書順で並んでいます。

min・max引数の指定方法

minmaxの引数は、必ず(または[で始める必要があります。[は閉区間(その値を含む)、(は開区間(その値を含まない)を意味します。例を見てみましょう。

ZRANGEBYLEX set [a [f

上記のコマンドは、a ≤ 要素 ≤ f の条件を満たすすべての要素を返します。

ZRANGEBYLEX set [a (f

一方、こちらのコマンドは、a ≤ 要素 < f の条件を満たす要素のみを返します(fは含まれません)。

特殊な値「+」と「–」

minmaxには、+という特別な値を指定することもできます。+は正の無限大の文字列、は負の無限大の文字列を表します。たとえば、ZRANGEBYLEX set – +というコマンドを実行すると、ソート済みセットに格納されたすべての要素が返されます。

LIMITオプションで件数を絞り込む

LIMITオプション(任意)をコマンドに渡すことで、offset(開始位置)からcount(取得件数)分の一致する要素だけを取得できます。もしcountに負の値を指定した場合は、offset以降のすべての要素が返されます。以下に例を示します。

ZRANGEBYLEX set [a [f LIMIT 1 3
※set = [a, b, c, d, e, f, g, h] の場合

この場合、2番目に一致する要素から3件が返されます。つまり結果は [b, c, d] となります。

存在しないキーや不正な型の扱い

指定したキーが存在しない場合は空のセットが返されます。一方、キーは存在するものの、そこに保存されている値がソート済みセット型ではない場合はエラーが返されます。

構文

redis host:post> ZRANGEBYLEX <keyname> <min> <max> [LIMIT offset count]

戻り値

- (array) reply:指定範囲内のソート済みセットの要素を配列で返す。
- 空のセット:キーが存在しない場合。
- エラー:キーは存在するが、保存されている値がソート済みセット型ではない場合。

実行例

Redis ZRANGEBYLEXコマンドの使い方 – 辞書順(昇順)で指定範囲内のソート済みセット要素を取得する

参考資料

  1. ZRANGEBYLEX コマンド公式ドキュメント

以上が、ZRANGEBYLEXコマンドを使って、指定した範囲内の値を持つソート済みセットの要素を辞書順の昇順で取得する方法でした。この記事が役に立った場合は、ぜひコメント欄でご意見をお聞かせください。また、他の方へのシェアも歓迎します。

  1. Redis ZREVRANGEBYSCOREコマンド徹底解説!スコア範囲を指定してソート済みセットの要素を降順で取得する方法

    このチュートリアルでは、RedisのZREVRANGEBYSCOREコマンドを使用して、指定したスコア範囲内に含まれるソート済みセット(Sorted Set)の全要素を、スコアの降順で取得する方法を詳しく解説します。 ZREVRANGEBYSCOREコマンドとは ZREVRANGEBYSCOREコマンドは、引数として渡されたmax(最大値)以下かつmin(最小値)以上のスコアを持つ、ソート済みセット内のすべての要素を返します。要素はスコアの降順で返され、同一のスコアを持つ要素同士は辞書順の逆順(降順)で並べられます。 デフォルトではmaxとminは閉区間(境界値を含む)として扱われますが、値の

  2. Redis ZRANGEBYSCOREコマンドの使い方 – スコア範囲を指定してソート済みセットの要素を昇順に取得する方法

    このチュートリアルでは、RedisのZRANGEBYSCOREコマンドを使用して、指定したスコア範囲内にあるソート済みセット(sorted set)のすべての要素を、スコアの昇順で取得する方法について解説します。 ZRANGEBYSCOREコマンドとは ZRANGEBYSCOREコマンドは、引数として渡されたmin(最小値)以上かつmax(最大値)以下のスコアを持つ、ソート済みセット内のすべての要素を返します。返される要素はスコアの昇順に並べられ、同じスコアを持つ要素同士は辞書順(レキシコグラフィカル順)で昇順に配置されます。 デフォルトではminとmaxは閉区間(境界値を含む)として扱われま