Redisで集合の積集合を求める方法|SINTER・SINTERSTOREコマンドの使い方
このチュートリアルでは、Redisに保存された2つ以上のセット(集合)値に対して積集合(インターセクション)操作を実行する方法を、SINTER コマンドと SINTERSTORE コマンドを使って解説します。
集合の積集合とは?
集合論において、2つ以上の集合の積集合(共通部分)とは、すべての集合に共通して含まれる要素だけを集めた集合のことです。例を見てみましょう。
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8, 9}
A と B の積集合:
A ∩ B = {4, 5}
この例では、AとBの両方に含まれる要素は「4」と「5」だけなので、積集合は {4, 5} となります。
SINTER コマンドとは
SINTER コマンドは、指定した2つ以上のセットに対して積集合操作を実行し、その結果を配列として返します。
- 指定したキーが存在しない場合、そのキーは空のセットとして扱われます。
- キーは存在するものの、そのキーに保存されている値がセット型ではない場合はエラーが返されます。
構文
redis host:port> SINTER <keyName 1> <keyName 2> <keyName 3>
戻り値
- (array) 積集合操作の結果として得られた要素を含む配列 - エラー:キーは存在するが、保存されている値がセット型ではない場合
実行例

SINTERSTORE コマンドとは
SINTERSTORE コマンドも、指定した2つ以上のセットに対して積集合操作を実行します。ただし、SINTERと異なる点は、結果を配列として返すのではなく、指定した宛先キーに新しいセットとして保存するという点です。
- 指定したキーが存在しない場合、そのキーは空のセットとして扱われます。
- キーは存在するものの、そのキーに保存されている値がセット型ではない場合はエラーが返されます。
構文
redis host:port> SINTERSTORE <destination keyName> <keyName 1> <keyName 2> <keyName 3>
戻り値
- (integer) 宛先のセットに保存された要素数 - エラー:キーは存在するが、保存されている値がセット型ではない場合
実行例

SINTERとSINTERSTOREの使い分け
両コマンドの違いを簡単にまとめると以下のようになります。
- SINTER: 積集合の結果をその場で確認したい場合に便利です。結果は一時的な応答として返されます。
- SINTERSTORE: 積集合の結果を後で再利用したい場合に便利です。結果はRedis内の別のキーに永続化されます。
参考資料
- SINTER コマンド公式ドキュメント
- SINTERSTORE コマンド公式ドキュメント
以上が、Redisに保存された2つ以上のセット値に対して積集合操作を実行する方法の解説でした。この記事が役に立ったと思ったら、ぜひコメント欄で感想を共有したり、他の方にもシェアしてみてください。
-
【Redis入門】ZRANK・ZREVRANKコマンドでソートセットの要素のランクを取得する方法
このチュートリアルでは、Redisデータストアに格納されたソートセット(Sorted Set)の値から、特定の要素のランク(順位)を取得する方法を、ZRANKコマンドとZREVRANKコマンドを使って解説します。 ZRANKコマンドとは ZRANKコマンドは、指定したキーに格納されているソートセットの中から、対象メンバーのランクを返すコマンドです。ソートセット内の要素はスコアの昇順で並んでおり、スコアが同じ要素同士は辞書順(レキシコグラフィカル順)の昇順で比較されます。 ランクはゼロベースである点に注意してください。つまり、最もスコアが低いメンバーのランクは「0」となります。 要素がソートセ
-
Redisでキーに文字列値を設定する方法を徹底解説 – SET / SETNX / SETEX / PSETEX コマンドの使い方
このチュートリアルでは、Redisのデータストア上で指定したキーに文字列値を設定する方法について、SET、SETNX、SETEX、PSETEX の4つのコマンドを使って詳しく解説します。それぞれのコマンドの動作の違いや使い分けのポイントもあわせて紹介するので、Redisの文字列操作をマスターしたい方はぜひ参考にしてください。 SETコマンドとは SETコマンドは、指定したキーに文字列値を設定するための最も基本的なコマンドです。キーがすでに存在する場合は、その型に関係なく値が上書きされます。また、キーに設定されていた以前の有効期限(TTL)も削除される点に注意が必要です。 SETコマンドのオプシ