文章目录
前言
集合类型也是保存多个字符串类型的元素的,和列表类型不同的是,set集合类型中的元素是无序的且集合中的元素是不允许出现重复的,一个集合中最多可以存储 2^32-1 个元素。
命令
SADD
SADD 命令将一个或者多个元素添加到集合中,如果集合不存在则会先创建出一个集合然后再添加元素。注意:重复的元素无法添加到一个集合中。SADD key member[member...]
时间复杂度:O(1)
返回值:本次操作添加成功的元素的个数
127.0.0.1:6379> sadd key 1
(integer) 1
127.0.0.1:6379> sadd key 2 2 3 4 #当向set中添加重复元素的时候,是无法成功添加的,set中保证每一个元素只存在一个
(integer) 3
SMEMBERS
SMEMBERS 命令获取一个 set 中的所有元素(元素间的顺序是无序的)SMEMBERS key
时间复杂度:O(N),N为 set 中元素个数
返回值:set 中的所有元素
127.0.0.1:6379> sadd key 1 3 2 4 5 8 6 7
(integer) 8
127.0.0.1:6379> smembers key # 可以看到set中元素的顺序和我们插入的顺序是不同的
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
SISMEMBER
SISMEMBER 命令判断一个元素是否在 set 中。SISMEMBER key member
时间复杂度:O(1)
返回值:1表示该元素在set中,0表示该元素不在set中
127.0.0.1:6379> sadd key 1 3 2 4 5 8 6 7
(integer) 8
127.0.0.1:6379> sismember key 1
(integer) 1
127.0.0.1:6379> sismember key 10
(integer) 0
SCARD
SCARD 命令获取一个 set 的基数(cardinality),即 set 中的元素个数。SCARD key
时间复杂度:O(1)
返回值:set 内元素的个数
127.0.0.1:6379> sadd key 1 3 2 4 5 8 6 7
(integer) 8
127.0.0.1:6379> scard key
(integer) 8
SPOP
SPOP 命令从 set 中删除并返回一个或者多个元素,这里是 pop,那么是否意味着是从 set 的末尾删除呢?其实不是的,因为 set 中的元素是无序的,所以取出哪个元素实际是未定义行为,即可以看作是随机的。SPOP key [count]
时间复杂度:O(N),N是count
返回值:删除的元素的值
127.0.0.1:6379> sadd key 1 3 2 4