概述

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

sadd

添加set元素(添加一个或多个),set集合如果不存在就会先创建集合

sadd key member1 member2…

127.0.0.1:6379> sadd set1 a b c a
(integer) 3

smembers

查看指定key集合元素

smembers key

127.0.0.1:6379> smembers set1
1)”b”
2)”a”
3)”c”

srem

删除元素(删除一个或多个元素)

srem key member1 member2…

127.0.0.1:6379> smembers set1
1)”1”
2)”c”
3)”a”
4)”b”
5)”3”
6)”2”
127.0.0.1:6379> srem set1 a 1
(integer) 2
127.0.0.1:6379> smembers set1
1)”b”
2)”c”
3)”3”
4)”2”

sismember

判断某个元素是否存在(返回1表示存在,返回0表示不存在)

sismember key member

127.0.0.1:6379> smembers set1
1)”b”
2)”c”
3)”3”
4)”2”
127.0.0.1:6379> sismember set1 a
(integer) 0
127.0.0.1:6379> sismember set1 2
(integer) 1

sdiff

计算两个集合的差集(key1去掉key1和key2的交集元素,key1和key2的位置交换会得到不同的结果)

sdiff key1 key2

127.0.0.1:6379> sadd set2 a b c
(integer) 3
127.0.0.1:6379> sadd set3 b c d e
(integer) 4
127.0.0.1:6379> sdiff set2 set3
1)”a”
127.0.0.1:6379> sdiff set3 set2
1)”d”
2)”e”

sinter

计算两个集合的交集

sinter key1 key2

127.0.0.1:6379> sinter set2 set3
1)”b”
2)”c”

sunion

计算两个集合的并集

sunion key1 key2

127.0.0.1:6379> sunion set2 set3
1)”b”
2)”a”
3)”c”
4)”e”
5)”d”

scard

计算元素总数

scard key

127.0.0.1:6379> smembers set1
1)”b”
2)”c”
3)”3”
4)”2”
127.0.0.1:6379> scard set1
(integer) 4

srandmember

随机取一个或多个元素,count为空或者是1时,只随机选一个元素

srandmember key count

127.0.0.1:6379> srandmember set1
“3”
127.0.0.1:6379> srandmember set1
“b”
127.0.0.1:6379> srandmember set1 2
1)”b”
2)”3”
127.0.0.1:6379> srandmember set1 2
1)”3”
2)”2”

sdiffstore

把差集结果存储到新集合中

sdiffstore newKey key1 key2

127.0.0.1:6379> smembers set2
1)”b”
2)”a”
3)”c”
127.0.0.1:6379> smembers set3
1)”d”
2)”b”
3)”e”
4)”c”
127.0.0.1:6379> sdiffstore newSet set2 set3
(integer) 1
127.0.0.1:6379> smembers newSet
1)”a”

sinterstore

把交集结果存储到新集合中

sinterstore newKey key1 key2

127.0.0.1:6379> smembers set2
1)”b”
2)”a”
3)”c”
127.0.0.1:6379> smembers set3
1)”d”
2)”b”
3)”e”
4)”c”
127.0.0.1:6379> sinterstore newSet set2 set3
(integer) 2
127.0.0.1:6379> smembers newSet
1)”b”
2)”c”

sunionstore

把并集结果存储到新集合中

sunionstore newKey key1 key2

127.0.0.1:6379> smembers set2
1)”b”
2)”a”
3)”c”
127.0.0.1:6379> smembers set3
1)”d”
2)”b”
3)”e”
4)”c”
127.0.0.1:6379> sunionstore newSet set2 set3
(integer) 5
127.0.0.1:6379> smembers newSet
1)”b”
2)”a”
3)”c”
4)”e”
5)”d”