美文网首页纵横研究院数据库技术专题社区
Redis实战-Redis五种数据类型(四-3 集合)

Redis实战-Redis五种数据类型(四-3 集合)

作者: 擦普洱 | 来源:发表于2019-05-05 21:52 被阅读15次

3.集合
  Redis的集合以无序的方式来存储多个各不相同的元素,用户可以快速对集合执行添加元素的操作、移出元素操作以及检查一个元素是否存在于集合里。本节将对最常用的集合命令进行介绍,包括插入命令、移出命令、将元素从一个集合移动到另一个集合的命令,以及对多个集合执行交集运算的命令。

一些常用的集合命令

命令 用例和描述
SADD SADD key-name item [item ...] --将一个或多个元素添加到集合里面,并返回被添加元素当中原本并不存在与集合里面的元素数量
SREM SREM key-name item --从集合里面移出一个或多个元素,并返回被移出元素的数量
SISMEMBER SISMEMBER key-name item --检查元素item是否存在于集合key-name 里
SCARD SCARD key-name --返回集合包含的所有元素的数量
SMEMBERS SMEMBERS key-name --返回集合包含的所有元素
SRANDMEMBER SRANDMEMBER key-name [count] --从集合里面随机地返回一个或多个元素,当count为正数时,命令返回的随机元素不会重复;当count为负数时,命令返回的随机元素可能会出现重复
SPOP SPOP key-name --随即地移除集合中的一个元素,并返回被移除的元素
SMOVE SMOVE source-key dest-key item --如果集合source-key 包含元素item,那么从集合source-key里面移除元素item,并将元素item,添加到集合dest-key中,如果item被成功移除,那么明林赶回1,否则返回0

下面来一波实操:

# SADD命令会将那些目前并不存在于集合里面的元素添加到集合里面,并返回被添加元素的数量
127.0.0.1:6379> sadd set-key a b c
(integer) 3
# srem函数在元素被成功移除时返回剩余的个数,移除失败时返回0即代表没有移除成功
127.0.0.1:6379> srem set-key c d
(integer) 1
127.0.0.1:6379> srem set-key c d
(integer) 0
# 查看集合包含元素的数量
127.0.0.1:6379> scard set-key
(integer) 2
# 获取集合包含的所有元素
127.0.0.1:6379> smembers set-key
1) "b"
2) "a"
# 将元素从一个集合移动到另一个集合,在执行smove操作的时候,如果用户想要移动的元素不存在于第一个集合里,那么移动操作就 不会执行。
127.0.0.1:6379> smove set-key set-key2 a
(integer) 1
127.0.0.1:6379> smove set-key set-key2 c
(integer) 0
127.0.0.1:6379> smembers set-key2
1) "a"
127.0.0.1:6379>

通过使用上面展示的命令,我们可以将各不相同的多个元素添加到集合里面,单集合真正厉害的地方在于组合和关联多个集合。

用于组合和处理多个集合的Redis命令

命令 用例和描述
SDIFF SDIFF key-name [key-name ...] --返回那些存在于第一个集合,但不存在于其他集合中的元素(数学上的差集运算)
SDIFFSTORE SDIFFSTORE dest-key key-name [key-name ...] --将那些存在于第一个集合但并不存在于其他集合中的元素存储到dest-key键里面
SINTERSTORE SINTERSTORE dest-key key-name [key-name ...] --将那些同事存在于所有集合的元素(数学上的交集运算)存储到dest-key键里面
SUNION SUNION key-name [key-name ...] --返回那些至少存在于一个集合中的元素(数学上的并及计算)
SUNIONSTORE SUNIONSTORE dest-key key-name [key-name ...] --将那些至少存在于一个集合中的元素(数学上的并集计算)存储到dest-key键里面

这些命令分别是并集运算、交集运算和差集运算这3个操作的返回结果版本和存储结果版本,一下给出实例:

# 给skey1和skey2集合中添加元素
127.0.0.1:6379> sadd skey1 a b c d
(integer) 4
127.0.0.1:6379> sadd skey2 c d e f
(integer) 4
# 计算出第一个集合里面移出第二个集合包含的所有的元素
127.0.0.1:6379> sdiff skey1 skey2
1) "a"
2) "b"
# 计算出同时存在于两个集合里面的所有元素
127.0.0.1:6379> sinter skey1 skey2
1) "c"
2) "d"
#计算出两个集合包含的所有各不相同的元素
127.0.0.1:6379> sunion skey1 skey2
1) "a"
2) "e"
3) "f"
4) "c"
5) "b"
6) "d"
127.0.0.1:6379>

以上就是Redis集合的差集、交集、并集运算的示例。

不怕从零开始,只怕从未启程!

参考文献:
菜鸟教程:https://www.runoob.com/redis/redis-keys.html
《Redis实战》Josiah L. Carlson著

相关文章

  • Redis入门(2) - 数据类型

    Redis中的数据类型 字符串 散列 列表 集合 有序集合 Redis中的数据类型 Redis定义了这几种数据类型...

  • day39-Redis和MongoDB

    1. Redis redis函数学习Redis数据类型:字符串、队列、集合、哈希、有序集合临时设置密码获取密码co...

  • redis 基本数据结构

    redis五种基本数据类型 1.String类型 2.列表类型list 3.集合类型 set 区别: redis集...

  • Redis 数据类型

    Redis 数据类型 前面也提到过,Redis 支持字符串、哈希表、列表、集合、有序集合五种数据类型的存储。了解这...

  • Redis实战-Redis五种数据类型(四-3 集合)

    3.集合  Redis的集合以无序的方式来存储多个各不相同的元素,用户可以快速对集合执行添加元素的操作、移出元素操...

  • Redis学习笔记系列(三)——基本数据类型之字符串

    5. Redis数据类型 Redis支持字符串(string)、列表(list)、哈希(hash)、集合(set)...

  • Redis

    Redis 内容:1、Redis简介2、Redis 安装和基础管理3、Redis 数据类型4、Redis 的消息模...

  • Redis的安装和部署

    Redis的安装和部署 基本知识 Redis的数据类型:字符串、列表(lists)、集合(sets)、有序集合(s...

  • NoSQL二--Redis

    目录 一、Redis介绍二、安装Redis三、Redis 持久化四、Redis 的数据类型五、Redis常用操作六...

  • Redis进阶系列三(数据类型-下)

    Redis进阶系列三(数据类型-下) 1、sorted_set类型 Redis 有序集合和集合一样也是string...

网友评论

    本文标题:Redis实战-Redis五种数据类型(四-3 集合)

    本文链接:https://www.haomeiwen.com/subject/plyunqtx.html