文章目录
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