前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 集合(Sets) 复习

Redis 集合(Sets) 复习

作者头像
陈大剩博客
发布2023-03-06 09:06:54
1670
发布2023-03-06 09:06:54
举报
文章被收录于专栏:陈大剩博客专栏

介绍

集合类似 Java 中的 HashSet,内部实现是一个 value 永远为 null 的 HashMap,实际就是通过计算hash的方式来快速排重的,这也是 set 能提供判断一个成员是否在集合内的原因。

应用场景

redis 的 sets 类型是使用哈希表构造的,因此复杂度是 o(1),它支持集合内的增删改查,并且支持多个集合间的交集、并集、差集操作。可以利用这些集合操作,解决程序开发过程当中很多数据集合间的问题。比如计算网站独立ip,用户画像中的用户标签,共同好友等功能

命令大纲

新增(SADD)

添加一个&多个成员(SADD)

代码语言:javascript
复制
SADD key member [member ...]
返回值:被添加到集合中的新元素的数量,不包括被忽略的元素。
代码语言:javascript
复制
# SADD key member [member ...]
> SADD testsets zhangsan lisi wangwu zhaoliu zhangsan
(integer) 4
> sadd testsets1 chendasheng zhansi liwu wangliu
(integer) 4

查询(SCARD、SMEMBERS、SISMEMBER、SDIFF、SDIFFSTORE、SINTER、SINTERSTORE、SUNION、SUNIONSTORE、SRANDMEMBER)

获取的成员数(SCARD)

代码语言:javascript
复制
SCARD key
返回值

集合的数量。 当集合 key 不存在时,返回 0 。

代码语言:javascript
复制
> SCARD testsets
(integer) 4

返回所有成员(SMEMBERS)

代码语言:javascript
复制
SMEMBERS key
代码语言:javascript
复制
> SMEMBERS testsets
1) "zhaoliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"

> SMEMBERS testsets1
1) "wangliu"
2) "liwu"
3) "zhansi"
4) "chendasheng"

判断成员是否存在集合中(SISMEMBER)

代码语言:javascript
复制
 SISMEMBER key member
返回值

存在返回 1 不存在返回 0

代码语言:javascript
复制
> SISMEMBER testsets chendasheng
(integer) 0
> SISMEMBER testsets1 chendasheng
(integer) 1

查与其他集合的差异(SDIFF)【第一个与其它】

代码语言:javascript
复制
SDIFF key [key ...]
返回值
代码语言:javascript
复制
> SADD test1 1 2 3
> SADD test2 2 3 4
> SDIFF test1  test3
1) "1"
2) "2"

返回所有集合的差集存储在其他集合中(SDIFFSTORE)

代码语言:javascript
复制
# destination 储存的集合
SDIFFSTORE destination key [key ...]
返回值
代码语言:javascript
复制
> SDIFFSTORE test4 test1 test3
(integer) 2
> SMEMBERS test4
1) "1"
2) "2"

返回所有集合的交集(SINTER)

代码语言:javascript
复制
SINTER key [key ...]
返回值
代码语言:javascript
复制
> SINTER test1 test2
1) "2"
2) "3"

返回所有集合的交集存储在其他集合中(SINTERSTORE)

代码语言:javascript
复制
# destination 储存的集合
SINTERSTORE destination key [key ...]
返回值
代码语言:javascript
复制
> SINTERSTORE test5 test1 test4
(integer) 2
> SMEMBERS test5
1) "1"
2) "2"

返回所有集合的并集(SUNION)

代码语言:javascript
复制
SUNION key [key ...]
返回值
代码语言:javascript
复制
> SADD test1 1 2 3
> SADD test2 2 3 4
> SUNION test1 test2
1) "1"
2) "2"
3) "3"
4) "4"

返回所有集合的并集存储在其他集合中(SUNIONSTORE)

代码语言:javascript
复制
# destination 储存的集合
SUNIONSTORE destination key [key ...]
返回值
代码语言:javascript
复制
> SUNIONSTORE test6 test1 test2
(integer) 4
> SMEMBERS test6
1) "1"
2) "2"
3) "3"
4) "4"

返回集合中一个或多个随机数(SRANDMEMBER)

代码语言:javascript
复制
SRANDMEMBER key [count]
返回值
代码语言:javascript
复制
> SMEMBERS test6
1) "1"
2) "2"
3) "3"
4) "4"

删除

移除并返回集合中的一个或多个随机元素

代码语言:javascript
复制
SPOP key [count]
返回值
代码语言:javascript
复制
> SPOP test6 2
1) "2"
2) "1"
> SMEMBERS test6
1) "3"
2) "4"

移除集合中一个或多个成员

代码语言:javascript
复制
SREM key member [member ...]
返回值
代码语言:javascript
复制
> SREM test6 3 4
(integer) 2
> SMEMBERS test6
(empty array)

其他操作

将 member 元素从 source 集合移动到 destination 集合

代码语言:javascript
复制
SMOVE source destination member
返回值
代码语言:javascript
复制
> SMOVE test1 test2 1
(integer) 1
> SMEMBERS test1
1) "2"
2) "3"

迭代

代码语言:javascript
复制
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
返回值

参考字符串迭代

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 应用场景
  • 命令大纲
  • 新增(SADD)
    • 添加一个&多个成员(SADD)
      • 返回值:被添加到集合中的新元素的数量,不包括被忽略的元素。
  • 查询(SCARD、SMEMBERS、SISMEMBER、SDIFF、SDIFFSTORE、SINTER、SINTERSTORE、SUNION、SUNIONSTORE、SRANDMEMBER)
    • 获取的成员数(SCARD)
      • 返回值
    • 返回所有成员(SMEMBERS)
      • 判断成员是否存在集合中(SISMEMBER)
        • 返回值
      • 查与其他集合的差异(SDIFF)【第一个与其它】
        • 返回值
      • 返回所有集合的差集存储在其他集合中(SDIFFSTORE)
        • 返回值
      • 返回所有集合的交集(SINTER)
        • 返回值
      • 返回所有集合的交集存储在其他集合中(SINTERSTORE)
        • 返回值
      • 返回所有集合的并集(SUNION)
        • 返回值
      • 返回所有集合的并集存储在其他集合中(SUNIONSTORE)
        • 返回值
      • 返回集合中一个或多个随机数(SRANDMEMBER)
        • 返回值
    • 删除
      • 移除并返回集合中的一个或多个随机元素
        • 返回值
      • 移除集合中一个或多个成员
        • 返回值
    • 其他操作
      • 将 member 元素从 source 集合移动到 destination 集合
        • 返回值
      • 迭代
        • 返回值
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档