前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入理解Redis的Set类型的使用及应用

深入理解Redis的Set类型的使用及应用

作者头像
desperate633
发布2018-08-27 16:50:16
1.9K0
发布2018-08-27 16:50:16
举报
文章被收录于专栏:desperate633

Redis 集合(Set)

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

Set的应用场景

当我们使用QQ的时候,经常会收到一个消息就是QQ好友推荐。

这个功能就可以用Set来实现。

假设我们想象一下,我们用传统的关系型数据库要实现这个功能,我们就需要进行比较复杂的查询,首先获取A的好友关系,这个可能需要进行表的连接操作,然后获取B的好友关系,然后再进行查找,可能会进行交集差集等运算,在A不再B等操作,我们会发现较为复杂,且效率不高,消耗资源,同时增加了数据库的负载。

但如果我们用set实现的话,就比较直接简单。 首先用一个set存储A的好友,然后一个set存储B的好友,这样我们想要知道共同好友直接用set进行交集运算就可以了,而这在redis的set中是比较容易实现的。

Set的命令

Sadd 命令

Redis Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。 假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。 当集合 key 不是集合类型时,返回一个错误。 注意:在Redis2.4版本以前, SADD 只接受单个成员值。 语法 redis Sadd 命令基本语法如下:

代码语言:javascript
复制
redis 127.0.0.1:6379> SADD KEY_NAME VALUE1..VALUEN

返回值 被添加到集合中的新元素的数量,不包括被忽略的元素。

Smembers 命令

Redis Smembers 命令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。 语法 redis Smembers 命令基本语法如下:

代码语言:javascript
复制
redis 127.0.0.1:6379> SMEMBERS KEY VALUE 

返回值 集合中的所有成员。

Sinter 命令

Redis Sinter 命令返回给定所有给定集合的交集。 不存在的集合 key 被视为空集。 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。 语法 redis Sinter 命令基本语法如下:

代码语言:javascript
复制
redis 127.0.0.1:6379> SINTER KEY KEY1..KEYN 

返回值 交集成员的列表。

Sdiff 命令

Redis Sdiff 命令返回给定集合之间的差集。不存在的集合 key 将视为空集。 语法 redis Sdiff 命令基本语法如下:

代码语言:javascript
复制
redis 127.0.0.1:6379> SDIFF FIRST_KEY OTHER_KEY1..OTHER_KEYN 

返回值 包含差集成员的列表。

Sunion 命令

Redis Sunion 命令返回给定集合的并集。不存在的集合 key 被视为空集。 语法 redis Sunion 命令基本语法如下:

代码语言:javascript
复制
redis 127.0.0.1:6379> SUNION KEY KEY1..KEYN

返回值 并集成员的列表。

Scard 命令

Redis Scard 命令返回集合中元素的数量。 语法 redis Scard 命令基本语法如下:

代码语言:javascript
复制
redis 127.0.0.1:6379> SCARD KEY_NAME 

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

Srem 命令

Redis Srem 命令用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。 当 key 不是集合类型,返回一个错误。 在 Redis 2.4 版本以前, SREM 只接受单个成员值。 语法 redis Srem 命令基本语法如下:

代码语言:javascript
复制
redis 127.0.0.1:6379> SREM KEY MEMBER1..MEMBERN

返回值 被成功移除的元素的数量,不包括被忽略的元素。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Redis 集合(Set)
  • Set的应用场景
  • Set的命令
    • Sadd 命令
      • Smembers 命令
        • Sinter 命令
          • Sdiff 命令
            • Sunion 命令
              • Scard 命令
                • Srem 命令
                相关产品与服务
                云数据库 Redis®
                腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档