跳到主要内容

[toc]

redis数据类型 set 集合

set(集合)简介

简介: hash表实现,元素不重复

可以存储的值: 无序集合

操作: 添加、获取、移除单个元素,检查一个元素是否已经存在于集合中,计算交集、并集、差集从集合里面随机获取元素

应用场景: 共同好友;利用唯一性,统计访问网站的所有IP

范围:集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)

使用示例:

127.0.0.1:6379> SADD s a
(integer) 1
127.0.0.1:6379> SADD s b
(integer) 1
127.0.0.1:6379> SADD s c
(integer) 1
127.0.0.1:6379> SMEMBERS s
1) "b"
2) "c"
3) "a"

redis集合常用命令

sadd key member1 [member2]

含义:向集合添加一个或多个成员

示例:

127.0.0.1:6379> SADD s aaa bbb ccc
(integer) 3

scard key

含义:获取集合的成员数

示例:

127.0.0.1:6379> SADD s aaa bbb ccc
(integer) 3
127.0.0.1:6379> SCARD s
(integer) 3

sdiff key1 [key2]

含义:返回给定所有集合的差集,⚠️返回的差集来自第一个key,而不是后边的key

示例:

127.0.0.1:6379> SADD s aaa bbb ccc
(integer) 3
127.0.0.1:6379> SADD s1 aaa ccc ddd eee fff
(integer) 5
127.0.0.1:6379> SDIFF s s1
1) "bbb"

#差集结果是bbb,s在s1中有的元素是aaa ccc,没有bbb,因为差集结果来自第一个key,也就是s,即aaa bbb ccc,肯定是这3个元素中的某一个或者多个或者没有
127.0.0.1:6379> SDIFF s s1
1) "bbb"

sdiffstore destination key1 [key2]

含义:返回给定所有集合的差集并存储在 destination 中

示例:

#向集合s1、s2中插入元素
127.0.0.1:6379> SADD s1 aaa bbb ccc
(integer) 3
127.0.0.1:6379> SADD s2 aaa ccc ddd
(integer) 3

#把s1和s2的差集存储在s3中
127.0.0.1:6379> SDIFFSTORE s3 s1 s2
(integer) 1
127.0.0.1:6379> SMEMBERS s3
1) "bbb"

sinter key1 [key2]

含义:返回给定所有集合的交集

示例:

127.0.0.1:6379> SADD s1 aaa bbb ccc
(integer) 3
127.0.0.1:6379> SADD s2 bbb ddd fff
(integer) 3
127.0.0.1:6379> SADD s3 ggg bbb kkk
(integer) 3
127.0.0.1:6379> SINTER s1 s2 s3
1) "bbb"

sinterstore destination key1

含义:返回给定所有集合的交集并存储在 destination 中

示例:

27.0.0.1:6379> SADD s1 aaa bbb ccc
(integer) 3
127.0.0.1:6379> SADD s2 bbb ddd fff
(integer) 3
127.0.0.1:6379> SADD s3 ggg bbb kkk
(integer) 3
127.0.0.1:6379> SINTERSTORE s4 s1 s2 s3
(integer) 1
127.0.0.1:6379> SMEMBERS s4
1) "bbb"

sismember key member

含义:判断member元素是否是集合 key 的成员

示例:

127.0.0.1:6379> SADD s1 aaa bbb ccc
(integer) 3
127.0.0.1:6379> SISMEMBER s1 bbb
(integer) 1
127.0.0.1:6379> SISMEMBER s1 ddd
(integer) 0

smembers key

含义:返回集合中的所有成员

示例:

127.0.0.1:6379> SADD s1 aaa bbb ccc
(integer) 3
127.0.0.1:6379> SMEMBERS s1
1) "bbb"
2) "ccc"
3) "aaa"

smove source destination member

含义:将member元素从source集合移动到destination集合

示例:

127.0.0.1:6379> SADD s1 aaa bbb ccc
(integer) 3
127.0.0.1:6379> SMOVE s1 s2 bbb
(integer) 1
127.0.0.1:6379> SMEMBERS s1
1) "ccc"
2) "aaa"
127.0.0.1:6379> SMEMBERS s2
1) "bbb"

spop key

含义:移除并返回集合中的一个随机元素

示例:

127.0.0.1:6379> SADD s1 aaa bbb ccc
(integer) 3
127.0.0.1:6379> SPOP s1
"bbb"
127.0.0.1:6379> SPOP s1
"aaa"
127.0.0.1:6379> SPOP s1
"ccc"
127.0.0.1:6379> SPOP s1
(nil)

srandmember key [count]

含义:返回集合中一个或多个随机数,count不写默认返回一个

示例:

127.0.0.1:6379> SRANDMEMBER s1 2
1) "bbb"
2) "ccc"
127.0.0.1:6379> SRANDMEMBER s1
"bbb"

srem key member1 [member2]

含义:移除集合中一个或多个成员

示例:

127.0.0.1:6379> SADD s1 aaa bbb ccc
(integer) 3
127.0.0.1:6379> SREM s1 aaa
(integer) 1
127.0.0.1:6379> SMEMBERS s1
1) "bbb"
2) "ccc"

sunion key1 [key2]

含义:返回所有给定集合的并集

示例:

127.0.0.1:6379> SADD s1 aaa bbb ccc
(integer) 3
127.0.0.1:6379> SADD s2 ccc ddd eee
(integer) 3
127.0.0.1:6379> SUNION s1 s2
1) "aaa"
2) "ccc"
3) "bbb"
4) "eee"
5) "ddd"

sunionstore destination key1 [key2]

含义:所有给定集合的并集存储在destination集合中

示例:

127.0.0.1:6379> SADD s1 aaa bbb ccc
(integer) 3
127.0.0.1:6379> SADD s2 ccc ddd eee
(integer) 3
127.0.0.1:6379> SUNIONSTORE s3 s1 s2
(integer) 5
127.0.0.1:6379> SMEMBERS s3
1) "aaa"
2) "ccc"
3) "bbb"
4) "eee"
5) "ddd"

SSCAN key cursor [MATCH pattern] [COUNT count

含义:迭代集合中的元素

示例: