Redis ZUNIONSTOREコマンド徹底解説 – ソート済みセットの和集合を計算する方法
このチュートリアルでは、Redisに保存された2つ以上のソート済みセット(Sorted Set)に対して、ZUNIONSTOREコマンドを使って和集合(ユニオン)操作を実行する方法を学びます。
セットの和集合とは?
集合論において、2つ以上の集合の和集合とは、それらすべての集合に含まれる要素(重複なし)をすべて持つ集合のことです。例を見てみましょう。
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8, 9}
AとBの和集合:
A U B = {1, 2, 3, 4, 5, 6, 7, 8, 9}
このように、両方の集合に存在するすべての要素が1つの集合にまとめられます。
ZUNIONSTOREコマンドとは?
ZUNIONSTOREコマンドは、指定された2つ以上のソート済みセットに対して和集合操作を実行し、その結果を新しいソート済みセットとして指定したキーに保存します。
このコマンドの主な特徴は以下の通りです。
- 存在しないキーは空のソート済みセットとして扱われます。
- キーは存在するが、その値がソート済みセットでない場合はエラーが返されます。
- 結果はdestinationキーに新しいソート済みセットとして格納され、destinationキーがすでに存在する場合は上書きされます。
構文
redis host:post> ZUNIONSTORE <destination> numkeys <keyName> [<keyName>] [WEIGHTS weight [weight]] [AGGREGATE SUM|MIN|MAX]
戻り値
- 和集合操作の結果得られた要素を含む配列(array reply) - キーが存在するが、その値がソート済みセットでない場合はエラー
numkeys引数について
numkeysは、和集合操作の対象となる入力キー(ソート済みセットを含むキー)の数を指定します。numkeysは、入力キーやその他のオプション引数より先に必ず渡す必要があります。実行結果はdestinationキーに新しいソート済みセットとして保存されます。
WEIGHTSオプション
WEIGHTSオプションを使用すると、各入力ソート済みセットに対する乗算係数(重み)を指定できます。これは、集約関数に渡される前に、すべての入力ソート済みセット内の各要素のスコアがこの係数によって乗算されることを意味します。WEIGHTSオプションが指定されない場合、乗算係数はデフォルトで1になります。
AGGREGATEオプション
AGGREGATEオプションを使用すると、和集合の結果をどのように集約するかを指定できます。デフォルト値はSUMで、この場合、要素のスコアはその要素が存在するすべての入力ソート済みセットにわたって合計されます。このオプションをMINまたはMAXに設定すると、結果のセットには、その要素が存在する入力ソート済みセットの中での最小スコアまたは最大スコアが格納されます。
実行例
実際のコマンド実行例を通じて、ZUNIONSTOREコマンドの動作を確認してみましょう。複数のソート済みセットを作成し、それらに対して和集合操作を実行することで、結果がdestinationキーにどのように保存されるかがわかります。
参考資料
- ZUNIONSTOREコマンド公式ドキュメント
以上が、Redisに保存された2つ以上のソート済みセットに対して和集合操作を実行する方法の解説でした。この記事が役に立ったと思ったら、ぜひコメント欄でご意見をお聞かせください。また、他の方にもシェアしていただけると嬉しいです。
-
Redis ZCARDコマンドの使い方 – ソート済みセットの要素数を取得する方法
このチュートリアルでは、Redisのコマンド「ZCARD」を使用して、指定したキーに保存されたソート済みセット(Sorted Set)のサイズ(要素数)を取得する方法を解説します。redis-cliにおけるZCARDコマンドの基本構文は以下のとおりです。 構文 redis host:post> ZCARD <key name> 戻り値 (integer) ソート済みセットに含まれる要素数を表す整数値 (integer) 0:指定したキーが存在しない場合 エラー:キーは存在するが、値がソート済みセットではない場合 ZCARDコマンドの計算量はO(1)であるため、セットに大量の要
-
Redis ZINCRBYコマンドの使い方 – Redisでソート済みセットの要素スコアをインクリメントする方法
このチュートリアルでは、Redisデータストアに保存されたソート済みセット(Sorted Set)型の値について、特定の要素のスコアをインクリメントする方法を学びます。この操作には、redis-cliでZINCRBYコマンドを使用します。 ZINCRBYコマンドは、キーに保存されているソート済みセットの値の中から指定した要素を探し、そのスコアを指定した値(increment)だけ増加させるために使用します。もし指定した要素がソート済みセット内に存在しない場合は、その要素が新しく追加され、指定したincrement値がスコアとして設定されます。また、キー自体が存在しない場合には、指定した要素のみ