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:什么都不返回
    Redis学习之旅 Set篇

面试?

你怎么实现快速查询给定的几个人在博客系统里的共同关注?

  • 可以直接拿set求下关注的作者set的交集嘛!

相关文章: