美文网首页
Redis集合SET

Redis集合SET

作者: 老陈的记事本 | 来源:发表于2019-08-18 10:58 被阅读0次

集合特点:

  • 不允许存在重复值
  • 无序,不保证插入的顺序

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"

SDIFFSTORE destination key [key …]将SDIFF的结果保存到destination

相关文章

网友评论

      本文标题:Redis集合SET

      本文链接:https://www.haomeiwen.com/subject/zmqbjctx.html