[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
含义:迭代集合中的元素
示例: