文章目录
- 常用命令
- sadd & smembers
- sismember & scard
- spop
- smove & srem
- 多个集合间的交互命令
- 交集 & sinter & sinterstore
- 并集 & sunion & sunionstore
- 差集 & sdiff & sdiffstore
- 内部编码
集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是 set 中的元素之间是无序且不重复的。一个集合最多可以存储 2^32 - 1 个元素。多个集合之间可以取交集、并集、差集。
常用命令
sadd & smembers
sadd:将一个或多个元素插入到 set 中,重复元素无法插入
smembers:获取 set 中所有元素
sismember & scard
sismember:判断指定元素是否在 set 中
scard:返回 set 的元素个数
spop
因为 set 是无序的,所以 spop 会在 set 中随机取出指定数量个元素
smove & srem
smove:将指定 set 中的指定元素取出并放到另一个指定 set 中
srem:取出 set 中的指定元素
多个集合间的交互命令
交集 & sinter & sinterstore
sinter:获取多个指定 set 的交集
sinterstore:获取多个指定 set 的交集并放到指定的目标 set 中,sinterstore 后面跟着的是一个不存在的目标 set
并集 & sunion & sunionstore
用法与上述的交集命令一样
差集 & sdiff & sdiffstore
用法与上述的两个都一样
内部编码
集合类型的内部编码有两种:
- 当集合中的元素都是整数并且元素的个数⼩于 set-max-intset-entries 配置(默认512个)Redis 会选⽤ intset 来作为集合的内部实现减少内存消耗
- 不满足 intset 时就会选用 hashtable 实现