目录
相关内容:
Redis五大基本类型——Hash哈希命令详解(命令用法详解+思维导图详解)-CSDN博客
Redis五大基本类型——String字符串命令详解(命令用法详解+思维导图详解)_redis 字符串-CSDN博客
Redis五大基本类型——List列表命令详解(命令用法详解+思维导图详解)_redis list塞数据-CSDN博客
一、Set集合类型介绍
集合类型也是保存多个字符串类型的元素,但和列表不同的是,元素之间是无序的,元素不允许重复。一个集合中最多可以存储 2^32-1 个元素。
Redis除了支持集合内的增删改查操作,同时还支持多个集合取交集、并集、差集,合理地利用好集合类型,能在实际开发中解决很多问题。
集合类型的特点:
1、集合中的元素是无序的,排列顺序与插入顺序无关,是随机的。
2、集合中的元素不允许重复。
二、常见命令
1、SADD
将一个或者多个元素添加到 set 中。注意,重复的元素无法添加到 set 中。
语法:
SADD key member [member ...]
返回值:
本次添加成功的元素个数
示例:
127.0.0.1:6379> SADD mykey 1 2 3 4 5
(integer) 5
127.0.0.1:6379> smembers mykey
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SADD mykey 1 2 3 4 5
(integer) 0
127.0.0.1:6379> smembers mykey
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
2、SMEMBERS
获取一个 set 中的所有元素,元素间的顺序是无序的。
语法:
SMEMBERS key
返回值:
所有元素的列表
示例:
127.0.0.1:6379> sadd mykey 1 2 3
(integer) 3
127.0.0.1:6379> sadd mykey "hello" "world"
(integer) 2
127.0.0.1:6379> SMEMBERS mykey
1) "2"
2) "hello"
3) "3"
4) "1"
5) "world"
3、SISMEMBER
判断一个元素在不在 set 中。
语法:
SISMEMBER key member
返回值:
1表示元素在 set 中
0表示元素不在 set 中或者key不存在
示例:
127.0.0.1:6379> SMEMBERS mykey
1) "2"
2) "hello"
3) "3"
4) "1"
5) "world"
127.0.0.1:6379> SISMEMBER mykey 1
(integer) 1
127.0.0.1:6379> SISMEMBER mykey 111
(integer) 0
127.0.0.1:6379> SISMEMBER nilkey 1
(integer) 0
4、SCARD
获取 set 中的元素个数。
语法:
SCARD key
返回值:
set 中的元素个数
示例:
127.0.0.1:6379> SMEMBERS mykey
1) "2"
2) "1"
3) "3"
4) "hello"
5) "world"
127.0.0.1:6379> SCARD mykey
(integer) 5
127.0.0.1:6379> SCARD nilkey
(integer) 0
5、SRANDMEMBER
从 set 中返回一个或多个元素。注意,由于 set 内的元素是无序的,所以取出哪个元素实际是未定义行为,可以看作是随机的。
语法:
SRANDMEMBER key [count]
返回值:
取出的元素
示例:
127.0.0.1:6379> sadd key a b c d e f g
(integer) 7
127.0.0.1:6379> SRANDMEMBER key
"e"
127.0.0.1:6379> SRANDMEMBER key
"f"
127.0.0.1:6379> SRANDMEMBER key 2
1) "f"
2) "d"
127.0.0.1:6379> SRANDMEMBER key 4
1) "f"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> SRANDMEMBER key 7
1) "c"
2) "f"
3) "b"
4) "a"
5) "e"
6) "g"
7) "d"
127.0.0.1:6379> SRANDMEMBER key 10
1) "c"
2) "f"
3) "b"
4) "a"
5) "e"
6) "g"
7) "d"
127.0.0.1:6379> smembers key
1) "f"
2) "b"
3) "a"
4) "c"
5) "e"
6) "g"
7) "d"
6、SPOP
从 set 中删除并返回一个或多个元素。注意,由于 set 内的元素是无序的,所以取出哪个元素实际是未定义行为,可以看作是随机的。
语法:
SPOP key [count]
返回值:
取出的元素
示例:
127.0.0.1:6379> sadd mykey 1
(integer) 1
127.0.0.1:6379> sadd mykey 2
(integer) 1
127.0.0.1:6379> sadd mykey 3
(integer) 1
127.0.0.1:6379> smembers mykey
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SPOP mykey
"2"
127.0.0.1:6379> smembers mykey
1) "1"
2) "3"
127.0.0.1:6379> sadd mykey 4 5 6 7 8 9
(integer) 6
127.0.0.1:6379> smembers mykey
1) "1"
2) "3"
3) "4"
4) "5"
5) "6"
6) "7"
7) "8"
8) "9"
127.0.0.1:6379> SPOP mykey 2
1) "3"
2) "4"
127.0.0.1:6379> SPOP mykey 3
1) "7"
2) "1"
3) "8"
127.0.0.1:6379> smembers mykey
1) "5"
2) "6"
3) "9"
注意SRANDMEMBER 和 SPOP 的区别:
SRANDMEMBER 只进行取出操作,对集合中的元素不会删除
SPOP 进行取出和删除操作,会删除集合中的元素
7、SMOVE
将一个元素从源 set 取出并放入目标 set 中。
语法:
SMOVE source destination member
返回值:
1 表示移动成功
0 表示失败
示例:
127.0.0.1:6379> sadd skey 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> smembers skey
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> SMOVE skey dkey 1
(integer) 1
127.0.0.1:6379> SMOVE skey dkey 3
(integer) 1
127.0.0.1:6379> smembers skey
1) "2"
2) "4"
3) "5"
4) "6"
127.0.0.1:6379> smembers dkey
1) "1"
2) "3"
8、SREM
将指定的元素从 set 中删除。
语法:
SREM key member [member ...]
返回值:
本次操作删除的元素个数
示例:
127.0.0.1:6379> sadd mykey one
(integer) 1
127.0.0.1:6379> sadd mykey two
(integer) 1
127.0.0.1:6379> sadd mykey three
(integer) 1
127.0.0.1:6379> smembers mykey
1) "one"
2) "three"
3) "two"
127.0.0.1:6379> SREM mykey one
(integer) 1
127.0.0.1:6379> SREM mykey four
(integer) 0
127.0.0.1:6379> smembers mykey
1) "three"
2) "two"
9、集合间操作
在Set类型中可使用命令进行 交集、并集、差集 操作:
(1)SINTER
获取给定 set 的交集中的元素。
语法:
SINTER key [key ...]
返回值:
交集的元素
示例:
127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5
127.0.0.1:6379>
127.0.0.1:6379> SINTER key1 key2
1) "f"
2) "a"
3) "c"
(2)SINTERSTORE
获取给定 set 的交集中的元素,并保存到目标 set 中。
语法:
SINTERSTORE destination key [key ...]
返回值:
交集的元素个数
示例:
127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5
127.0.0.1:6379> SINTERSTORE deskey key1 key2
(integer) 3
127.0.0.1:6379> smembers deskey
1) "f"
2) "a"
3) "c"
(3)SUNION
获取给定的 set 的并集中的元素。
语法:
SUNION key [key ...]
返回值:
并集的元素
示例:
127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5
127.0.0.1:6379> SUNION key1 key2
1) "f"
2) "b"
3) "a"
4) "c"
5) "e"
6) "i"
7) "h"
8) "d"
(4)SUNIONSTORE
获取给定 set 的并集中的元素,并保存到目标 set 中。
语法:
SUNIONSTORE destination key [key ...]
返回值:
并集的元素个数
示例:
127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5
127.0.0.1:6379> SUNIONSTORE deskey key1 key2
(integer) 8
127.0.0.1:6379> smembers deskey
1) "f"
2) "b"
3) "a"
4) "c"
5) "e"
6) "i"
7) "h"
8) "d"
(5)SDIFF
获取给定的 set 差集中的元素。
语法:
SDIFF key [key ...]
返回值:
差集的元素
示例:
127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5
127.0.0.1:6379> SDIFF key1 key2
1) "b"
2) "e"
3) "d"
127.0.0.1:6379> SDIFF key2 key1
1) "h"
2) "i"
#返回前者有而后者没有的元素
(6)SDIFFSTORE
获取给定的 set 差集中的元素,并保存到目标 set 中。
语法:
SDIFFSTORE destination key [key ...]
返回值:
差集的元素个数
示例:
127.0.0.1:6379> sadd key1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd key2 a c f h i
(integer) 5
127.0.0.1:6379> SDIFFSTORE deskey_1 key1 key2
(integer) 3
127.0.0.1:6379> SDIFFSTORE deskey_2 key2 key1
(integer) 2
127.0.0.1:6379> smembers deskey_1
1) "b"
2) "e"
3) "d"
127.0.0.1:6379> smembers deskey_2
1) "h"
2) "i"
三、命令小结
以上就是 Redis五大基本类型——SET集合命令详解(命令用法详解+思维导图详解)的全部内容了,希望能对你有所帮助!你的点赞收藏关注是对我最大的支持!