【Redis之Set类型的详解Set类型中常用命令的实践】
Redis之Set类型的详解&Set类型中常用命令的实践
知识回顾:
通过对Redis中的String的命令做了充分的讲解以及实践学习
通过对Redis中String类型之Bit命令的详解以及Bit命令的实践进行了学习
通过对Redis中的Hash类型以及Hash中常用命令的实践学习
通过对Redis之List类型的详解&List类型中常用命令的实践
接下来的学习任务:
接下来我们要学习的内容是:Redis之Set类型的详解&Set类型中常用命令的实践。
Redis中String类型内容请看这里呦:
【Redis之String类型的详解&String类型中常用命令的实践】
Redis中String类型是Bit命令内容请看这里呦:
【Redis中String类型之Bit命令的详解&Bit命令的实践】
Redis之Hash类型的详解&Hash类型中常用命令的实践请看这里呦:
【Redis之Hash类型的详解&Hash类型中常用命令的实践】
Redis之List类型的详解&List类型中常用命令的实践请看这里呦:
【Redis之List类型的详解&List类型中常用命令的实践】
Redis中Set的介绍
Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。
Redis中Set的基本命令结构
set的基本命令 唯一标识的key 集合中的元素(无序不重复)
Redis中Set的常用命令
Redis中set的常用命令 | 备注说明 |
---|---|
sadd | 添加一个或多个元素到集合中,如果集合中存在该元素则忽略 |
scard | 返回集合中的元素的个数 |
sismember | 判断集合中是否含有某元素 |
smembers | 获取集合中的所有的元素 |
srem | 删除集合中指定的元素 |
srandmember | 随机返回集合中的元素,版本2.6后在命令之后可以跟一个count。指定随机返回的元素个数 |
spop | 和srandmember类似,只是spop会将获取的元素移除而srandmember不会移除元素 |
smove | 将元素从一个集合移动到另一个集合中 |
sdiff | 返回两个集合的差集 |
sdiffstore | 和sdiff类似,不同的是会将差集结果保存起来 |
sinter | 获取两个集合的交集 |
sinterstore | 和sinter类似,不同的是将结果保存起来了 |
sunion | 获取两个集合的并集 |
sunionstore | 获取两个集合的并集并保存起来 |
sadd命令
添加一个或多个元素到集合中,如果集合中存在该元素不添加,返回0,如果添加不重复的返回添加成功的元素个数。
127.0.0.1:6379> sadd teacher zhang huang zuo pan xue liu
(integer) 6
127.0.0.1:6379> sadd teacher zhang
(integer) 0
127.0.0.1:6379> sadd teacher li
(integer) 1
127.0.0.1:6379>
scard命令
返回集合中元素的个数。
127.0.0.1:6379> sadd teacher zhang huang zuo pan xue liu
(integer) 6
127.0.0.1:6379> sadd teacher zhang
(integer) 0
127.0.0.1:6379> sadd teacher li
(integer) 1
127.0.0.1:6379> scard teacher
(integer) 7
127.0.0.1:6379>
sismember命令
判断集合中是否含有某元素。
127.0.0.1:6379> sismember teacher zhang
(integer) 1
127.0.0.1:6379> sismenber teacher liu
(error) ERR unknown command `sismenber`, with args beginning with: `teacher`, `liu`,
127.0.0.1:6379> sismember teacher liu
(integer) 1
127.0.0.1:6379> sismember teacher xi
(integer) 0
127.0.0.1:6379>
smembers命令
获取集合中的所有的元素。
127.0.0.1:6379> sismember teacher xi
(integer) 0
127.0.0.1:6379> smembers teacher
1) "zhang"
2) "huang"
3) "pan"
4) "li"
5) "liu"
6) "xue"
7) "zuo"
127.0.0.1:6379>
srem命令
删除集合中指定的元素,删除成功,返回1,如果集合中不含有该元素,则忽略,返回0。
127.0.0.1:6379> smembers teacher
1) "zhang"
2) "huang"
3) "pan"
4) "li"
5) "liu"
6) "xue"
7) "zuo"
127.0.0.1:6379> srem teacher li
(integer) 1
127.0.0.1:6379> smembers teacher
1) "zhang"
2) "huang"
3) "pan"
4) "liu"
5) "xue"
6) "zuo"
127.0.0.1:6379>
srandmember命令
随机返回集合中的元素。
redis2.6之后可以在命令后加一个count参数,指定随机返回的元素的个数。
如果count大于集合中的个数,则返回所有的元素。
负数的话取绝对值后然后返回指定元素。
127.0.0.1:6379> srandmember teacher
"zhang"
127.0.0.1:6379> srandmember teacher 3
1) "pan"
2) "liu"
3) "zuo"
127.0.0.1:6379> srandmember teacher 6
1) "zhang"
2) "huang"
3) "pan"
4) "liu"
5) "xue"
6) "zuo"
127.0.0.1:6379> srandmember teacher -3
1) "zuo"
2) "xue"
3) "pan"
127.0.0.1:6379> srandmember teacher 9
1) "zhang"
2) "huang"
3) "pan"
4) "liu"
5) "xue"
6) "zuo"
127.0.0.1:6379>
spop命令
与srandmember命令相似,都是随机返回指定的元素,不同的是spop直接移除,srandmember只是随即返回。
随机返回集合中的元素并且移除。
redis2.6之后可以在命令后加一个count参数,指定随机返回的元素的个数并直接移除。
如果count大于集合中的个数,将所有的元素移除。
负数的话取绝对值后然后移除指定个数的元素。
127.0.0.1:6379> spop teacher 2
1) "zhang"
2) "xue"
127.0.0.1:6379> smembers teacher
1) "huang"
2) "pan"
3) "liu"
4) "zuo"
127.0.0.1:6379>
smove命令
将指定的元素从一个集合移动到另一个集合中。
如果目的集合不存在,先创建,在移动到另一个集合中。
127.0.0.1:6379> smove teacher teacher_temp liu
(integer) 1
127.0.0.1:6379> smembers teacher
1) "huang"
2) "pan"
3) "zuo"
127.0.0.1:6379> smembers teacher_temp
1) "liu"
127.0.0.1:6379>
sdidd命令
返回两个集合的差集。
127.0.0.1:6379> sdiff teacher teacher_temp
1) "huang"
2) "zuo"
3) "pan"
127.0.0.1:6379> smembers teacher_temp
1) "liu"
127.0.0.1:6379> smembers teacher
1) "huang"
2) "pan"
3) "liu"
4) "zuo"
127.0.0.1:6379> sadd teacher_temp zhao
(integer) 1
127.0.0.1:6379> smembers teacher_temp
1) "liu"
2) "zhao"
127.0.0.1:6379> sdiff teacher_temp teacher
1) "zhao"
127.0.0.1:6379> sdiff teacher teacher_temp
1) "huang"
2) "zuo"
3) "pan"
127.0.0.1:6379>
sdiffstore命令
返回两个集合的差集并保存起来。和sdiff类似,不同的是会将差集结果保存起来。
127.0.0.1:6379> sdiff teacher teacher_temp
1) "huang"
2) "zuo"
3) "pan"
127.0.0.1:6379> sdiffstore teacher_dest teacher teacher_temp
(integer) 3
127.0.0.1:6379> smembers teacher_dest
1) "huang"
2) "zuo"
3) "pan"
127.0.0.1:6379>
sinter命令
获取两个集合的交集。
127.0.0.1:6379> smembers teacher
1) "huang"
2) "pan"
3) "liu"
4) "zuo"
127.0.0.1:6379> smembers teacher_temp
1) "liu"
2) "zhao"
127.0.0.1:6379> sinter teacher teacher_temp
1) "liu"
127.0.0.1:6379>
sinterstore命令
返回两个集合的交集并保存起来。和sinter类似,不同的是会将交集结果保存起来。
127.0.0.1:6379> sinter teacher teacher_temp
1) "liu"
127.0.0.1:6379> smembers teacher_temp
1) "liu"
2) "zhao"
127.0.0.1:6379> smembers teacher
1) "huang"
2) "pan"
3) "liu"
4) "zuo"
127.0.0.1:6379> sinterstore teacher_de teacher teacher_temp
(integer) 1
127.0.0.1:6379> smembers teacher_de
1) "liu"
127.0.0.1:6379>
sunion命令
获取两个集合的并集。
127.0.0.1:6379> smembers teacher
1) "huang"
2) "pan"
3) "liu"
4) "zuo"
127.0.0.1:6379> smembers teacher_temp
1) "liu"
2) "zhao"
127.0.0.1:6379> sunion teacher teacher_temp
1) "zuo"
2) "pan"
3) "huang"
4) "liu"
5) "zhao"
127.0.0.1:6379>
sunionstore命令
返回两个集合的并集并保存起来。和sunion类似,不同的是会将并集结果保存起来。
127.0.0.1:6379> smembers teacher
1) "huang"
2) "pan"
3) "liu"
4) "zuo"
127.0.0.1:6379> smembers teacher_temp
1) "liu"
2) "zhao"
127.0.0.1:6379> sunion teacher teacher_temp
1) "zuo"
2) "pan"
3) "huang"
4) "liu"
5) "zhao"
127.0.0.1:6379> sunionstore tea_dest teacher teacher_temp
(integer) 5
127.0.0.1:6379> smembers tea_dest
1) "zuo"
2) "pan"
3) "huang"
4) "liu"
5) "zhao"
127.0.0.1:6379>