返回顶部
首页 > 资讯 > 数据库 >Redis集合类型的常用命令小结
  • 558
分享到

Redis集合类型的常用命令小结

小结类型常用命令 2022-06-04 17:06:32 558人浏览 泡泡鱼
摘要

集合类型介绍 集合类型也是体现Redis一个比较高价值的一个类型了。因为Redis的集合类型,所以我们可以很容易的在Redis中执行差集运算、交集运算、并集运算。 首先我们先介绍一下集合类型和列表类型的区别

集合类型介绍

集合类型也是体现Redis一个比较高价值的一个类型了。因为Redis的集合类型,所以我们可以很容易的在Redis中执行差集运算、交集运算、并集运算。

首先我们先介绍一下集合类型和列表类型的区别,其实学过面向对象的语言的同学应该都能猜到这些类型有什么不同。

①集合类型和列表类型还是都能存储2^32-1个字符串

②集合类型是无序的,列表类型是有序的

③集合类型是唯一的,列表类型的值是不唯一的

下面我们一起来看一下语法。

1、增加删除元素命令


sadd key member [member ...]
srem key member [member ...]

sadd命令是用来向集合中增加元素的,当然根据前面的学习经验,如果集合不存在,肯定是会自动创建的。但是这里有点需要注意的是,如果元素已存在,那么他会忽略而不会覆盖。返回值是成功加入元素的数量(忽略的元素不算)。

srem命令也是一样,删除元素,如果元素存在才会删除成功,返回值是成功删除的元素的个数。

2、获得集合中的所有元素


smembers key

3、判断元素是否在集合中


sismember key member

这个判断操作的时间复杂度是O(1),无论集合中的元素有多少,这个命令始终都很很快的返回结果。存在返回1,不存在或没有这个键的时候都返回0 。

4、集合间运算


sdiff key [key ...]
sinter key [key ...]
suNIOn key [key ...]

这三个命令才能使Redis大显身手!

我们先准备点测试数据。


127.0.0.1:6379> sadd setA 1 2 3
(integer) 3
127.0.0.1:6379> sadd setB 2 3 4
(integer) 3
127.0.0.1:6379> sadd setC 3 4 5
(integer) 3

127.0.0.1:6379> smembers setA 
1) "1"
2) "2"
3) "3"
127.0.0.1:6379>

(1)下面我们来介绍sdiff命令,这个命令实际上是差集运算。

集合A与集合B的差值运算表示为A-B,代表所有属于A且不属于B的元素构成的集合。这个命令同时支持传入多个键,意思是A与B先做差集运算,然后结果再与C做差集运算。


127.0.0.1:6379> sdiff setA setB
1) "1"
127.0.0.1:6379> sdiff setB setC
1) "2"
127.0.0.1:6379> sdiff setA setB setC
1) "1"

(2)接下来我们介绍sinter命令,这个命令用来对多个集合执行交集运算。集合A与集合B的交集表示为A∩B,即所有属于A且属于B的元素构成的集合。这个命令也同时支持传入多个键,也是一样,一步一步的做交集运算。


127.0.0.1:6379> sinter setA setB
1) "2"
2) "3"
127.0.0.1:6379> sinter setA setB setC
1) "3"

(3)最后我们介绍并集运算命令sunion。集合A与集合B的并集意思是既属于A也属于B的集合。同样支持多个键传入。


127.0.0.1:6379> sunion setA setB
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> sunion setA setB setC
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

5、获得集合中元素的个数


scard key
127.0.0.1:6379> scard setA
(integer) 3
127.0.0.1:6379> scard setB
(integer) 3

这条命令用来获取集合中元素的个数。同样集合不存在返回0 。

6、进行集合运算并将结果存储


sdiffstore destination key [key ...]
sinterstore destination key [key ...]
sunionstore destination key [key ...]

这里在所有的集合命令之后加了个store,很清楚就是存储的意思了。destination就是目的地,也就是我们要存储的键名。

例:


127.0.0.1:6379> sunionstore setAll setA setB setC
(integer) 5
127.0.0.1:6379> smembers setAll
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

7、随机获得集合中的元素


srandmember key [count]

这个命令用来随机从集合中获取一个元素,count参数用来一词获取多个元素,根据count的正负有不同的意义。

(1)当count为正数时,获取count个不重复的元素,如果count大于所有值的个数,则返回全部元素。

(2)负值时,获得|count|个元素,但有可能相同。

其实这个随机并不是非常随机,因为实际上redis的集合用的是散列的存储结构,有兴趣的读者可以自己深入研究一下。


127.0.0.1:6379> srandmember setA 1
1) "1"
127.0.0.1:6379> srandmember setA 2
1) "3"
2) "2"
127.0.0.1:6379> SRANDMEMBER setA 5
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SRANDMEMBER setA -2
1) "3"
2) "3"

8、从集合中弹出一个元素


spop key

之前我们也看过lpop与rpop,那是从列表中弹出,但是集合是无序的,所以spop是随机弹出。 (弹出的元素被删除,不在原来的集合中)


127.0.0.1:6379> spop setA 1
1) "2"
127.0.0.1:6379> smembers setA
1) "1"
2) "3"

下面我们来举例一个集合的具体应用。

在我们文章存储的时候有个标签tag,这个我们在关系数据库的时候都需要使用中间表关联。但是在Redis中,我们可以很方便的处理。

对每篇文章,我们使用一个post:文章ID:tags的键,类型为集合,存储一篇文章所属的tags,这样本身关系型数据库我们需要关联文章表、标签表、中间关系表三个表的复杂操作,在Redis中就很好处理了。

有时候我们还需要获取指定标签的所有文章,我们还需要增加一类的键,即tag:标签名称:posts的集合类型键,存储每个标签的文章ID集合,这样我们每次想要获取所有属于某个标签的文章列表的时候也不用像关系数据库那样关联那么多表,而是直接通过键就可以直接获得了。

而在我们想要获取比如同时属于java和redis标签的文章时,我们只需要对tag:java:posts和tag:redis:posts做交集运算就OK了,是不是很方便呢?

总结

以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

您可能感兴趣的文档:

--结束END--

本文标题: Redis集合类型的常用命令小结

本文链接: https://lsjlt.com/news/11930.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Redis集合类型的常用命令小结
    集合类型介绍 集合类型也是体现redis一个比较高价值的一个类型了。因为Redis的集合类型,所以我们可以很容易的在Redis中执行差集运算、交集运算、并集运算。 首先我们先介绍一下集合类型和列表类型的区别...
    99+
    2022-06-04
    小结 类型 常用命令
  • Redis有序集合类型的常用命令小结
    一、有序集合类型 有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序而已。Redis中的有序集合类型,实际上是在集合类型上,为每个元素都关联一个分数,有序实际上说的是分数有序,我们根...
    99+
    2022-06-04
    小结 类型 常用命令
  • Redis列表类型的常用命令小结
    列表类型介绍 列表类型也是一个我们很长要用到的一个类型。比如我们发博客,要用到博客列表。如果没有列表我们就只能遍历键来获取所有文章或一部分文章了,这个语法是keys,但是这个命令需要遍历数据库中的所有键,处...
    99+
    2022-06-04
    小结 类型 常用命令
  • Redis字符串类型的常用命令小结
    Redis字符串类型 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串...
    99+
    2022-06-04
    小结 字符串 类型
  • Redis中散列类型的常用命令小结
    Redis散列类型 Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段和字段值的映射,但字段值只能是字符串,不支持其他数据类型,也就是说,散列类型不...
    99+
    2022-06-04
    小结 类型 常用命令
  • redis常用命令小结
    1、redis-benchmark redis基准信息,redis服务器性能检测 redis-benchmark -h localhost -p 6379 -c 100 -n 100000 100个并发连接...
    99+
    2022-06-04
    小结 常用命令 redis
  • Redis常用命令之操作Set(集合)
    场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Redis的启动和关闭(前台启动和...
    99+
    2022-04-14
    Redis常用命令之操作Set(集合)
  • DOS常用的命令合集
    这篇文章主要讲解了“DOS常用的命令合集”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“DOS常用的命令合集”吧!一)MD——建立子目录1.功能:创建新的子目录2.类型:内部命令3.格式:MD...
    99+
    2023-06-09
  • Redis常用命令之操作String类型
    场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Redis的启动和关闭(前台启动和...
    99+
    2018-04-04
    Redis常用命令之操作String类型
  • Redis基础类型常用操作命令
    Redis基础类型常用操作命令 概念:Redis是用C语言开发的一个开源的高性能键值对数据库。 特征: 数据间没有必然的联系 内部采用单线程机制进行工作 高性能 多数据类型支持 字符串类型 String 列表类型 List 散列类型 M...
    99+
    2022-02-15
    Redis基础类型常用操作命令
  • Redis常用命令之操作Hash类型
    场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Redis的启动和关闭(前台启动和...
    99+
    2016-10-09
    Redis常用命令之操作Hash类型
  • Redis常用命令之操作List类型
    场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Redis的启动和关闭(前台启动和...
    99+
    2021-09-07
    Redis常用命令之操作List类型
  • Linux常用命令合集
    这篇文章主要介绍“Linux常用命令合集”,在日常操作中,相信很多人在Linux常用命令合集问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux常用命令合集”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-13
  • Redis的五大数据类型及常用命令
    一、与数据库相关的命令 Redis启动后默认16个数据库,类似数组下表从零开始,初始默认使用零号库 切换数据库命令 select 数据库下标 查看当前数据库的key的数量 Dbsize 清空当前库 flushdb 清空所...
    99+
    2015-10-09
    Redis的五大数据类型及常用命令
  • beeline的常用命令小结
    本篇内容主要讲解“beeline的常用命令小结”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“beeline的常用命令小结”吧! &l...
    99+
    2024-04-02
  • Linux常用命令小结
    这篇文章主要讲解了“Linux常用命令小结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux常用命令小结”吧!Linux常用命令使用CRT / Xshell 软件连接VM,编写虚拟机1...
    99+
    2023-06-03
  • Linux中的常用命令小集
    这篇文章主要讲解了“Linux中的常用命令小集”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux中的常用命令小集”吧!Linux命令小集下文将分为:文件系统操作命令、系统管理命令、Li...
    99+
    2023-06-16
  • Redis常用命令(二)列表键、无序集合键
    ### 列表键的元素基本类型为string,按照插入顺序排序lpush key value1 value2 ..  # 在列表左侧插入数据lpush name dai liu wangrpush ...
    99+
    2024-04-02
  • Redis集合类型如何使用
    这期内容当中小编将会给大家带来有关Redis集合类型如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、集合内操作1.添加元素sadd key ...
    99+
    2024-04-02
  • R语言常用命令集合
    R语言常用命令 help.start()//打开帮助文档 q()//推出函数 ls()//返回处于现在名空间的对象名称 rm()//清楚对象;rm(list=ls())清除所有内存数...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作