首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >redis命令之操作集合

redis命令之操作集合

作者头像
OECOM
发布2020-07-01 17:10:53
发布2020-07-01 17:10:53
1.1K0
举报
文章被收录于专栏:OECOMOECOM

Redis的集合以无序的方式来存储多个各不相同的元素,用户可以快速地对集合执行添加、移除元素操作以及检查一个元素是否存在于集合里。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)

下面将对集合最常用的命令进行介绍,包括插入命令、移除命令、将元素从一个集合移动到另一个集合的命令,以及对多个集合执行交集运算、并集运算和差集运算的命令。

命令

描述

SADD key member1 [member2]

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

SCARD key

返回集合中元素的数量

SDIFF key1 [key2]

返回给定集合之间的差集。不存在的集合 key 将视为空集。差集的结果来自前面的 FIRST_KEY ,而不是后面的 OTHER_KEY1,也不是整个 FIRST_KEY OTHER_KEY1..OTHER_KEYN 的差集

SDIFFSTORE destination key1 [key2]

将给定集合之间的差集存储在指定的集合中。如果指定的集合 key 已存在,则会被覆盖

SINTER key1 [key2]

返回给定所有给定集合的交集。 不存在的集合 key 被视为空集。 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)

SINTERSTORE destination key1 [key2]

将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖

SISMEMBER key member

判断 member 元素是否是集合 key 的成员

SMEMBERS key

返回集合中的所有的成员。 不存在的集合 key 被视为空集合

SMOVE source destination member

将指定成员 member 元素从 source 集合移动到 destination 集合。SMOVE 是原子性操作。如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。当 source 或 destination 不是集合类型时,返回一个错误

SPOP key

用于移除并返回集合中的一个随机元素

SRANDMEMBER key [count]

用于返回集合中的一个随机元素。从 Redis 2.6 版本开始, Srandmember 命令接受可选的 count 参数:如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 Srandmember 则仅仅返回随机元素,而不对集合进行任何改动

SREM key member1 [member2]

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

SUNION key1 [key2]

返回给定集合的并集。不存在的集合 key 被视为空集

SUNIONSTORE destination key1 [key2]

将给定集合的并集存储在指定的集合 destination 中。如果 destination 已经存在,则将其覆盖

SSCAN key cursor [MATCH pattern] [COUNT count]

用于迭代集合中键的元素(示例介绍)

下面来介绍一下sscan命令,通过下图的命令来解释效果

sscan每次执行都只会返回少量元素,所以这些命令可以用于生产环境,而不会出现像 KEYS 或者 SMEMBERS 命令带来的可能会阻塞服务器的问题。

不过,SMEMBERS 命令可以返回集合键当前包含的所有元素, 但是对于SCAN这类增量式迭代命令来说,有可能在增量迭代过程中,集合元素被修改,对返回值无法提供完全准确的保证。

下面来看一下如何在nodejs中使用集合命令

代码语言:javascript
复制
myRedis.client.sismember("myRedisSet","你好,落帆亭",function(err,result){
        if(!err){
            console.log(result)
        }else{
            console.log(err)
        }
    })

在nodejs集成redis已经介绍了在nodejs中集成redis方法,这里不再赘述,直接示例如何使用。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档