集合特点:
- 不允许存在重复值
- 无序,不保证插入的顺序
SADD key member [member …] 插入元素
返回成功插入的个数
SEMEMBERS key 查看集合内成员
SISMEMBER key member 判断 member 元素是否集合 key 的成员
返回0/1
SPOP key 移除并返回集合中的一个随机元素
SRANDMEMBER key [count]
count为可选,填写后返回随机个数的集合元素;不填写则返回1个
- 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。
- 如果 count 大于等于集合基数,那么返回整个集合。
- 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
127.0.0.1:6379> srandmember s2 4
# 随机返回4个元素
1) "1"
2) "d"
3) "2"
4) "3"
SREM key member [member …] 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
返回移除的数量个数,不存在的则被忽略
127.0.0.1:6379> srem s2 1 2 3 4
(integer) 3
SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合。
返回值
如果 member
元素被成功移除,返回 1
。 如果 member
元素不是 source
集合的成员,并且没有任何操作对 destination
集合执行,那么返回 0
。
SCARD key 返回集合中元素的数量
127.0.0.1:6379> scard s1
(integer) 4
SMEMBERS key 返回key的所有元素,数量很多,建议使用sscan
127.0.0.1:6379> smembers s1
1) "d2"
2) "d1"
3) "d"
4) "d3"
SSCAN key cursor [MATCH pattern] [COUNT count]循环遍历
详细信息请参考 SCAN cursor [MATCH pattern] [COUNT count] 命令。
SINTER key [key …] 返回一个交集
127.0.0.1:6379> smembers s1
1) "d"
2) "d3"
3) "d1"
4) "a"
5) "b"
6) "d2"
127.0.0.1:6379> smembers s2
1) "a"
2) "c"
3) "b"
4) "e"
5) "3"
6) "d"
127.0.0.1:6379> sinter s1 s2 sssd #sssd是个空集
(empty list or set)
127.0.0.1:6379> sinter s1 s2
1) "b"
2) "a"
3) "d"
SINTERSTORE destination key [key …] 讲交集保存到destination
可用版本: >= 1.0.0
时间复杂度: O(N * M),N
为给定集合当中基数最小的集合,M
为给定集合的个数。
这个命令类似于 SINTER key [key …] 命令,但它将结果保存到 destination
集合,而不是简单地返回结果集。
如果 destination
集合已经存在,则将其覆盖。
destination
可以是 key
本身。
返回值
结果集中的成员数量。
代码示例
redis> SMEMBERS songs
1) "good bye joe"
2) "hello,peter"
redis> SMEMBERS my_songs
1) "good bye joe"
2) "falling"
redis> SINTERSTORE song_interset songs my_songs
(integer) 1
redis> SMEMBERS song_interset
1) "good bye joe"
SUNION key [key …] 将key和[key...] 合并后返回
可用版本: >= 1.0.0
时间复杂度: O(N),N
是所有给定集合的成员数量之和。
返回一个集合的全部成员,该集合是所有给定集合的并集。
不存在的 key
被视为空集。
并集成员的列表。
127.0.0.1:6379> sadd a b
(integer) 2
127.0.0.1:6379> sadd ss2 1 2
(integer) 2
127.0.0.1:6379> sunion ss1 ss2
1) "2"
2) "a"
3) "1"
4) "b"
SUNIONSTORE destination key [key …] 将key和[key...]保存到destination
可用版本: >= 1.0.0
时间复杂度: O(N),N
是所有给定集合的成员数量之和。
这个命令类似于SUNION key [key …]
命令,但它将结果保存到 destination
集合,而不是简单地返回结果集,如果 destination
已经存在,则将其覆盖。
返回值
结果集中的元素数量。
127.0.0.1:6379> sadd ss1 a b
(integer) 2
127.0.0.1:6379> sadd ss2 1 2
(integer) 2
127.0.0.1:6379> sunion ss1 ss2
1) "2"
2) "a"
3) "1"
4) "b"
127.0.0.1:6379> sunionstore ss3 ss1 ss2
(integer) 4
127.0.0.1:6379> smembers ss3
1) "2"
2) "a"
3) "1"
4) "b"
SDIFF key [key …] 该集合是所有给定集合和后面集合之间的差集
可用版本: >= 1.0.0
时间复杂度: O(N),N
是所有给定集合的成员数量之和
返回值
返回key和[key...] 对比的差集(key存在[key...]不存在 的元素)
127.0.0.1:6379> smembers s3
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> smembers s4
1) "e"
2) "2"
3) "a"
4) "1"
5) "b"
6) "c"
127.0.0.1:6379> smembers s5
1) "a"
2) "b"
3) "6"
4) "1"
5) "54"
6) "8"
127.0.0.1:6379> sdiff s3 s5
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> sdiff s3 s4 s5
1) "3"
2) "4"
127.0.0.1:6379> sdiff s5 s3
1) "54"
2) "6"
3) "a"
4) "b"
5) "8"
127.0.0.1:6379> sdiff s4 s3
1) "e"
2) "a"
3) "c"
4) "b"
网友评论