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

Redis ZADDコマンドの使い方 – ソート済みセットへの要素の作成と追加

このチュートリアルでは、RedisのZADDコマンドを使って、キーに保存されたソート済みセット(sorted set)の値に要素を作成・追加する方法を解説します。

ZADDコマンドは、指定したキーに格納されたソート済みセットに対して、それぞれのスコアを持つ要素を1つ以上追加するために使用します。すでに同じ要素が存在する場合は、そのスコアが更新され、正しい順序を保てるように適切な位置へ再挿入されます。スコアには倍精度浮動小数点数(double)の文字列表現を指定し、+inf(正の無限大)や-inf(負の無限大)も有効な値として利用できます。

キーがデータストアに存在しない場合は、挿入操作を行う前に新しいソート済みセットが自動的に作成されます。一方、キーは存在するものの、その値がソート済みセット型ではない場合にはエラーが返されます。

ZADDコマンドのオプション引数

RedisのZADDコマンドでは、以下のオプション引数を指定できます。

  1. XX: すでにソート済みセットに存在する要素のみを更新し、新しい要素は一切追加しません。
  2. NX: 新しい要素のみを追加し、既存の要素は決して更新しません。
  3. CH: 戻り値を「新規に追加された要素数」から「変更された要素の総数」に変更します。ここでの「変更された要素」には、新しく追加された要素と、スコアが更新された既存要素が含まれます。コマンドラインで指定された要素のうち、過去と同じスコアだった要素はカウントされません。
  4. INCR: このオプションを指定すると、ZADDはZINCRBYコマンドと同じように動作します。このモードでは、スコアと要素のペアは1組しか指定できません。また、キーがすでに存在する場合にのみ値が設定されます。

ソート済みセット内の要素は、スコアの昇順で並べられます。スコアが同一の要素同士については、辞書順(lexicographical order)で整列されます。Redis ZADDコマンドの構文は以下の通りです。

構文

redis host:post> ZADD <key> [XX|NX] [CH] [INCR] <score> <member> [<score> <member>]

出力

- 整数値: ソート済みセットに追加された要素の数
  (すでに存在していた要素は含まれません)
- エラー: キーが存在するが、その値がソート済みセット型でない場合

使用例

Redis ZADDコマンドの使い方 – ソート済みセットへの要素の作成と追加

参考資料

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

以上が、Redisのデータストア内にあるソート済みセットに要素を作成・追加する方法の解説でした。この記事がお役に立てたなら、ぜひコメント欄でご意見をお聞かせください。また、他の方にもシェアしていただければ幸いです。

  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は閉区間(境界値を含む)として扱われま