RedisのSetは、String型の重複を許さない無順序の集合です。各要素は一意であり、同じデータが複数存在することはできません。
RedisのSetはハッシュテーブルによって実装されており、追加、削除、検索の時間計算量は全てO(1)です。また、最大で232-1(4,294,967,295)個のメンバーを格納可能です。
形式:
形式:
形式:
形式:
形式:
形式:
形式:
形式:
形式:
形式:
形式:
形式:
形式:
形式:
形式:
1. 要素の追加
コマンド:sadd形式:
sadd キー メンバー1 [メンバー2]
127.0.0.1:6379> sadd set_data itemA
(integer) 1
127.0.0.1:6379> sadd set_data itemB itemC
(integer) 2
2. 全てのメンバーを取得
コマンド:smembers形式:
smembers キー
127.0.0.1:6379> smembers set_data
1) "itemC"
2) "itemB"
3) "itemA"
3. ランダムなメンバーを削除して返す
コマンド:spop形式:
spop キー
127.0.0.1:6379> sadd set_data itemA itemB itemC itemD itemE itemF itemG itemH itemI
(integer) 9
127.0.0.1:6379> spop set_data
"itemE"
127.0.0.1:6379> smembers set_data
1) "itemF"
2) "itemA"
3) "itemD"
4) "itemG"
5) "itemC"
6) "itemB"
7) "itemH"
8) "itemI"
4. 特定のメンバーを削除
コマンド:srem形式:
srem キー メンバー1 [メンバー2]
127.0.0.1:6379> srem set_data itemA itemB itemC
(integer) 3
127.0.0.1:6379> smembers set_data
1) "itemH"
2) "itemD"
3) "itemF"
4) "itemI"
5) "itemG"
5. メンバーの存在確認
コマンド:sismember形式:
sismember キー メンバー
127.0.0.1:6379> sismember set_data itemH
(integer) 1
127.0.0.1:6379> sismember set_data itemA
(integer) 0
6. 集合のサイズを取得
コマンド:scard形式:
scard キー
127.0.0.1:6379> scard set_data
(integer) 5
7. 差集合を取得
コマンド:sdiff形式:
sdiff key1 [key2] ...
127.0.0.1:6379> sadd group1 val1 val2 val3
(integer) 3
127.0.0.1:6379> sadd group2 val3 val4 val5
(integer) 3
127.0.0.1:6379> sdiff group1 group2
1) "val2"
2) "val1"
8. 差集合を別のキーに保存
コマンド:sdiffstore形式:
sdiffstore destination key1 [key2] ...
127.0.0.1:6379> sdiffstore result group1 group2
(integer) 2
127.0.0.1:6379> smembers result
1) "val2"
2) "val1"
9. 積集合を取得
コマンド:sinter形式:
sinter key1 [key2] ...
127.0.0.1:6379> sinter group1 group2
1) "val3"
10. 積集合を別のキーに保存
コマンド:sinterstore形式:
sinterstore destination key1 [key2] ...
127.0.0.1:6379> sinterstore inter_result group1 group2
(integer) 1
127.0.0.1:6379> smembers inter_result
1) "val3"
11. メンバーを別のセットに移動
コマンド:smove形式:
smove source destination member
127.0.0.1:6379> sadd origin valA valB valC
(integer) 3
127.0.0.1:6379> sadd target valD valE valF
(integer) 3
127.0.0.1:6379> smove origin target valA
(integer) 1
127.0.0.1:6379> smembers target
1) "valD"
2) "valF"
3) "valA"
4) "valE"
12. ランダムなメンバーを取得
コマンド:srandmember形式:
srandmember key [count]
127.0.0.1:6379> srandmember random_set
"valA"
127.0.0.1:6379> srandmember random_set 3
1) "valB"
2) "valA"
3) "valC"
13. 和集合を取得
コマンド:sunion形式:
sunion key1 [key2] ...
127.0.0.1:6379> sadd setA alpha beta
(integer) 2
127.0.0.1:6379> sadd setB gamma delta
(integer) 2
127.0.0.1:6379> sunion setA setB
1) "delta"
2) "gamma"
3) "beta"
4) "alpha"
14. 和集合を別のキーに保存
コマンド:sunionstore形式:
sunionstore destination key1 [key2] ...
127.0.0.1:6379> sunionstore union_result setA setB
(integer) 4
127.0.0.1:6379> smembers union_result
1) "delta"
2) "gamma"
3) "beta"
4) "alpha"
15. 集合をイテレーションする
コマンド:sscan形式:
sscan key cursor [MATCH pattern] [COUNT count]
127.0.0.1:6379> sscan set_key 0 MATCH me* COUNT 2
1) "1"
2) 1) "member1"
2) "member3"