前言
集合(set)类型也是用来保存多个 字符串元素,但和 列表类型 不一样的是,集合中 不允许有重复元素,并且集合中的元素是 无序的,不能通过 索引下标 获取元素。
![8e03ca45b96271429d59dfa3d0acbf68.png](https://img-blog.csdnimg.cn/img_convert/8e03ca45b96271429d59dfa3d0acbf68.png)
如图所示,集合 user:1:follow 包含着 "it"、"music"、"his"、"sports" 四个元素,一个 集合 最多可以存储 2 ^ 32 - 1 个元素。Redis 除了支持 集合内 的 增删改查,同时还支持 多个集合 取 交集、并集、差集。合理地使用好集合类型,能在实际开发中解决很多实际问题。
![51a490dd4d07f5deb7a60bd9f33c1acb.png](https://img-blog.csdnimg.cn/img_convert/51a490dd4d07f5deb7a60bd9f33c1acb.png)
正文
1. 相关命令
1.1. 集合内的操作命令
1.1.1. 添加元素
sadd key element [element ...]
返回结果为添加成功的 元素个数,例如:
127.0.0.1:6379> exists myset
(integer) 0
127.0.0.1:6379> sadd myset a b c
(integer) 3
127.0.0.1:6379> sadd myset a b
(integer) 0
1.1.2. 删除元素
srem key element [element ...]
返回结果为成功删除 元素个数,例如:
127.0.0.1:6379> srem myset a b
(integer) 2
127.0.0.1:6379> srem myset hello
(integer) 0
1.1.3. 计算元素个数
scard key
scard 的 时间复杂度 为 O(1),它 不会遍历 集合所有元素,而是直接用 Redis 的 内部 的变量,例如:
127.0.0.1:6379> scard myset
(integer) 1
1.1.4. 判断元素是否在集合中
sismember key element