Redis 集合(Set)

Redis の Set は String 型の順序なし集合です。集合のメンバーは一意であり、つまり集合内に重複したデータは存在できません。

集合オブジェクトのエンコーディングは intset または hashtable にすることができます。

Redis では集合はハッシュテーブルによって実装されているため、追加、削除、検索の計算量はすべて O(1) です。

集合内の最大メンバー数は 232- 1 (4294967295、各集合は40億以上のメンバーを格納できます)。

例

redis 127.0.0.1:6379> SADD サンプルkey redis
(integer) 1
redis 127.0.0.1:6379> SADD サンプルkey mongodb
(integer) 1
redis 127.0.0.1:6379> SADD サンプルkey mysql
(integer) 1
redis 127.0.0.1:6379> SADD サンプルkey mysql
(integer) 0
redis 127.0.0.1:6379> SMEMBERS サンプルkey

1) "mysql"
2) "mongodb"
3) "redis"

上記の例では、私たちはSADDコマンドを使用して、名前をサンプルkeyとする集合に3つの要素を挿入しました。


Redis 集合コマンド

以下の表は Redis 集合の基本コマンドを示しています:

番号コマンドと説明
1SADD key member1 [member2]
集合に1つ以上のメンバーを追加する
2SCARD key
集合のメンバー数を取得する
3SDIFF key1 [key2]
最初の集合と他の集合との差集合を返す。
4SDIFFSTORE destination key1 [key2]
指定されたすべての集合の差集合を返し、destination に格納する
5SINTER key1 [key2]
指定されたすべての集合の積集合を返す
6SINTERSTORE destination key1 [key2]
指定されたすべての集合の積集合を返し、destination に格納する
7SISMEMBER key member
member 要素が集合 key のメンバーであるかどうかを判定する
8SMEMBERS key
集合内のすべてのメンバーを返す
9SMOVE source destination member
member 要素を source 集合から destination 集合に移動する
10SPOP key
集合からランダムなメンバーを1つ削除して返す
11SRANDMEMBER key [count]
集合から1つ以上のランダムなメンバーを返す
12SREM key member1 [member2]
集合から1つ以上のメンバーを削除する
13SUNION key1 [key2]
指定されたすべての集合の和集合を返す
14SUNIONSTORE destination key1 [key2]
指定されたすべての集合の和集合を destination 集合に格納する
15SSCAN key cursor [MATCH pattern] [COUNT count]
集合内の要素を反復処理する
その他の拡張