Redis学习之旅 Set篇
set和list一样都是一个存储容器,但是它的list有两个不同的地方
一是无序
二是元素会自动去重
命令学习
redis-cli模式下键入 help @set 就可以快速相关的命令集合
1.0时代/2.0时代
set也是一个不经常变更的命令集,在1.0时代添加了大量的set命令之后 ,2.0版本增加过一个命令后就再也没有维护过,此处进行合并
项目 | Value | 作用 | 示例 |
---|---|---|---|
SADD | 1.0.0 | 向set里添加元素 | SADD key member [member …] |
SCARD | 1.0.0 | 获取set集合中的元素个数 | SCARD key |
SDIFF | 1.0.0 | 求第一个Key的差集 | SDIFF key [key …] |
SDIFFSTORE | 1.0.0 | 求差集并存入Key | SDIFFSTOREdestination key [key …] |
SINTER | 1.0.0 | 求多个集合中的交集 | SINTER key [key …] |
SINTERSTORE | 1.0.0 | 求完交集,将交集存入指定Key | SINTERSTORE destination key [key …] |
SISMEMBER | 1.0.0 | 判断元素是否存在 | SISMEMBER key member |
SMEMBERS | 1.0.0 | 获取所有元素 | SMEMBERS key |
SMOVE | 1.0.0 | 指定元素从源头集合移动到目标集合 | SMOVE source destination member |
SPOP | 1.0.0 | 命令用于移除集合中的指定 key 的一个或多个随机元素 | SPOP key [count] |
SRANDMEMBER | 1.0.0 | 随机取一部分元素 | SRANDMEMBER key [count] |
SREM | 1.0.0 | 删除某些元素 | SREM key member [member …] |
SSCAN | 2.8.0 | 一样,用来查看元素合集的 | SSCAN key cursor [MATCH pattern] [COUNT count] |
SUNION | 1.0.0 | 求并集 | SUNION key [key …] |
SUNIONSTORE | 1.0.0 | 求并集并存入 | SUNIONSTORE destination key [key …] |
关注点
SDIFF/SINTER/SUNION
可以拿来计算一系列数据的交集、并集、差集
SSCAN /SMEMBERS
和其他的指令一样,不考虑使用老版本的元素查看指令,使用SCAN系列命令,防止其他命令阻塞
SRANDMEMBER
它的count 参数比较好玩,可以分为正数/负数/0三种场景
- 正数:保证不重复的情形下,返回元素,要求返回的元素超出set总量的时候,只返回完整的set
- 负数:优先保证数据,返回的元素可能会出现重复
- 0:什么都不返回
面试?
你怎么实现快速查询给定的几个人在博客系统里的共同关注?
- 可以直接拿set求下关注的作者set的交集嘛!