Redisでセットの差分を求める方法|SDIFF・SDIFFSTOREコマンドの使い方
このチュートリアルでは、Redisデータストアに保存された2つ以上のセット値に対して差分演算を実行する方法を、SDIFFコマンドとSDIFFSTOREコマンドを使って解説します。
セットの差分とは
集合論において、2つの集合AとBの差分(A − B)は、「集合Aには含まれるが、集合Bには含まれない」すべての要素からなる集合として定義されます。具体例を見てみましょう。
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8, 9}
AとBの差分:
A - B = {1, 2, 3}

SDIFFコマンド
SDIFFコマンドは、指定された2つ以上のセットに対して差分演算を実行し、その結果を配列として返します。指定したキーのいずれかが存在しない場合、そのキーは空のセットとして扱われます。また、キーは存在するものの、そこに保存されている値がセット型でない場合はエラーが返されます。
構文
redis host:post> SDIFF <keyName 1> <keyName 2> <keyName 3>
出力
- (array) 差分演算の結果得られた要素を含む配列。 - エラー:キーが存在し、かつその値がセット型でない場合。
使用例

SDIFFSTOREコマンド
SDIFFSTOREコマンドは、指定された2つ以上のセットに対して差分演算を実行し、その結果を新しいセットとして指定したキーに保存します。戻り値としては、保存先のセットに含まれる要素数(整数)が返されます。SDIFFと同様に、存在しないキーは空のセットとして扱われ、値がセット型でない場合はエラーが返されます。
構文
redis host:post> SDIFFSTORE <destination keyName> <keyName 1> <keyName 2> <keyName 3>
出力
- (integer) 保存先のセットに含まれる要素数。 - エラー:キーが存在し、かつその値がセット型でない場合。
使用例

参考資料
- SDIFFコマンド公式ドキュメント
- SDIFFSTOREコマンド公式ドキュメント
以上が、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コマンドのオプシ