Redis的五大数据类型之集合(Set)的总结

导读:本篇文章讲解 Redis的五大数据类型之集合(Set)的总结,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Set简介

Redis的Set是String类型的无序集合,不同于List,Set中的元素不可以重复。Redis 中集合(Set)是通过哈希表(HashTable)实现的,所以添加,删除,查找的复杂度都是 O(1),另外Redis提供了一系列的交集、并集、差集的命令。

Set的常用操作命令总结

图片来源:https://www.runoob.com/redis/redis-sets.html
在这里插入图片描述

部分命令使用实例

1.SADD、SPOP、SMEMBERS

SADD key member1 [member2]
向集合key中添加一个或多个成员,成员不重复添加。如果集合key不存在,则新建集合key,并添加member元素到集合key中。返回添加成功的成员数。
SPOP key
移除并返回集合key中的一个随机元素
SMEMBERS key
返回集合key的所有元素
三个命令的使用如下:

127.0.0.1:6379> sadd set01 1 2 2 3 3 
(integer) 3
127.0.0.1:6379> smembers set01
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> spop set01
"2"
127.0.0.1:6379> smembers set01
1) "1"
2) "3"

2.SREM

SREM key member1 [member2]
用于移除集合key中一个或多个成员。返回成功移除的成员数。如果指定的元素不是key集合中的元素则忽略,并返回0。如果key集合不存在则被视为一个空的集合,该命令返回0。使用如下:

127.0.0.1:6379> smembers set01
1) "1"
2) "3"
127.0.0.1:6379> srem set01 1 3
(integer) 2
127.0.0.1:6379> smembers set01
(empty list or set)

3.SISMEMBER

SMEMBERS key
用于判断 member 元素是否是集合 key 的成员,是则返回1,不是或key不存在则返回0,使用如下:

127.0.0.1:6379> smembers set01
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> sismember set01 aa
(integer) 0
127.0.0.1:6379> sismember set02 2
(integer) 0
127.0.0.1:6379> sismember set01 2
(integer) 1

4.SCARD

SCARD key
获取集合key的成员数,如下:

127.0.0.1:6379> smembers set01
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> scard set01
(integer) 3

5.SRANDMENBER

SRANDMEMBER key [count]
用于返回集合key中一个或count(Redis2.6开始才有的整数类型的参数)个随机数。
如果count小于元素个数,则返回count个随机元素,如果count大于集合中元素的个数,则返回集合中的所有元素;当count是负数,则返回count的绝对值个随机元素,如果count的绝对值大于元素的个数,则返回的结果集里会出现一个元素出现多次的情况。使用如下:

127.0.0.1:6379> smembers set01
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> srandmember set01
"6"
127.0.0.1:6379> srandmember set01 4
1) "2"
2) "5"
3) "6"
4) "3"
127.0.0.1:6379> srandmember set01 -2
1) "6"
2) "3"
127.0.0.1:6379> srandmember set01 10
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> srandmember set01 -10
 1) "3"
 2) "3"
 3) "3"
 4) "4"
 5) "4"
 6) "1"
 7) "4"
 8) "1"
 9) "1"
10) "1"

6.SMOVE

SMOVE source destination member
将 member 元素从 source 集合移动到 destination 集合中(集合destination不存在就创建一个),如下:

127.0.0.1:6379> sadd set01 hello
(integer) 1
127.0.0.1:6379> smembers set01
1) "1"
2) "hello"
3) "5"
4) "2"
5) "6"
6) "4"
7) "3"
127.0.0.1:6379> smove set01 set02 hello
(integer) 1
127.0.0.1:6379> smembers set02
1) "hello"

7.SDIFF、SINTER、SUNION

这三个命令没有写key2就返回key1集合本身
SDIFF key1 [key2] 返回给定所有集合的差集,如下

127.0.0.1:6379> smembers set01
1) "1"
2) "5"
3) "2"
4) "6"
5) "4"
6) "3"
127.0.0.1:6379> smembers set02
1) "1"
2) "hello"
3) "3"
4) "2"
127.0.0.1:6379> sdiff set02
1) "1"
2) "hello"
3) "2"
4) "3"
127.0.0.1:6379> sdiff set01 set02
1) "4"
2) "5"
3) "6"
127.0.0.1:6379> sdiff set02 set01
1) "hello"

SINTER key1 [key2] 返回给定所有集合的交集,如下:

127.0.0.1:6379> sinter set01 set02
1) "1"
2) "3"
3) "2"

SUNION key1 [key2] 返回所有给定集合的并集,如下:

127.0.0.1:6379> sunion set01 set02
1) "1"
2) "hello"
3) "5"
4) "2"
5) "6"
6) "4"
7) "3"

另外,SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在集合 destination 中,另外两个对应的分别为SUNIONSTORE destination key1 [key2]SINTERSTORE destination key1 [key2]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/44355.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!