【Redis】 关于 Redis 集合类型

文章目录

  • 🍃前言
  • 🌳普通命令
    • 🚩sadd
    • 🚩smembers
    • 🚩sismember
    • 🚩scard
    • 🚩spop
    • 🚩smove
    • 🚩srem
  • 🌲集合间操作
    • 🚩sinter
    • 🚩sinterstore
    • 🚩sunion
    • 🚩sunionstore
    • 🚩sdiff
    • 🚩sdiffstore
  • 🎍集合类型的内部编码
  • 🍀集合类型的使用场景
  • ⭕总结

🍃前言

集合类型是用来保存多个字符串类型的元素的,但和列表类型是不同的,集合中

  1. 元素之间是⽆序的
  2. 元素不允许重复。

⼀个集合中最多可以存储 2^32 - 1 个元素。Redis 除了⽀持集合内的增删查改操作,同时还⽀持多个集合取交集、并集、差集,合理地使⽤好集合类型,能在实际开发中解决很多问题

🌳普通命令

🚩sadd

将⼀个或者多个元素添加到 set 中。注意,重复的元素⽆法添加到 set 中。

语法:

sadd key member [member ...]

时间复杂度:

  • O(1)

返回值:

  • 本次添加成功的元素个数

在这里插入图片描述

🚩smembers

获取⼀个 set 中的所有元素,注意,元素间的顺序是⽆序的。

语法:

semembers key

时间复杂度:

  • O(N)

返回值:

  • 所有元素的列表。

在这里插入图片描述

🚩sismember

判断⼀个元素在不在 set 中。

语法:

sismember key member

时间复杂度:

  • O(1)

返回值:

  • 1 表⽰元素在 set 中。0 表⽰元素不在 set 中或者 key 不存在。

在这里插入图片描述

🚩scard

获取⼀个 set 的基数(cardinality),即 set 中的元素个数。

语法:

scard key

时间复杂度:

  • O(1)

返回值:

  • set 内的元素个数。

在这里插入图片描述

🚩spop

从 set 中删除并返回⼀个或者多个元素。注意,由于 set 内的元素是⽆序的,所以取出哪个元素实际是未定义⾏为,是随机的

语法:

spop key [count]

时间复杂度:

  • O(N), n 是 count

返回值:

  • 取出的元素。

在这里插入图片描述

🚩smove

将⼀个元素从源 set 取出并放⼊⽬标 set 中。

语法:

smove source destination member

时间复杂度:

  • O(1)

返回值:

  • 1 表⽰移动成功,0 表⽰失败

在这里插入图片描述

🚩srem

将指定的元素从 set 中删除。

语法:

srem key member [member ...]

时间复杂度:

  • O(N), N 是要删除的元素个数.

返回值:

  • 本次操作删除的元素个数。

在这里插入图片描述

🌲集合间操作

对于集合,我们有三种基本操作,分别为交集、并集、差集

🚩sinter

获取给定 set 的交集中的元素

语法:

sinter key [key ...]

时间复杂度:

  • O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数.

返回值:

  • 交集的元素。

在这里插入图片描述

🚩sinterstore

获取给定 set 的交集中的元素并保存到⽬标 set 中。

语法:

sinterstore destination key [key ...]

时间复杂度:

  • O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数.

返回值:

  • 交集的元素个数

在这里插入图片描述

🚩sunion

获取给定 set 的并集中的元素。

语法:

sunion key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 并集的元素

在这里插入图片描述

🚩sunionstore

获取给定 set 的并集中的元素并保存到⽬标 set 中。

语法:

sunionstore destination key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 并集的元素个数。
    在这里插入图片描述

🚩sdiff

获取给定 set 的差集中的元素

语法:

sdiff  key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 差集的元素

在这里插入图片描述

🚩sdiffstore

获取给定 set 的差集中的元素并保存到⽬标 set 中

语法:

sdiffstore destination key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 差集的元素个数

在这里插入图片描述

🎍集合类型的内部编码

集合类型的内部编码有两种:

  • intset(整数集合):当集合中的元素都是整数并且元素的个数⼩于set-max-intset-entries 配置(默认 512 个)时,Redis 会选⽤ intset 来作为集合的内部实现,从⽽减少内存的使⽤。
  • hashtable(哈希表):当集合类型⽆法满⾜ intset 的条件时,Redis 会使⽤ hashtable 作为集合的内部实现。

🍀集合类型的使用场景

集合类型⽐较典型的使⽤场景是标签(tag)。

例如 A ⽤⼾对娱乐、体育板块⽐较感兴趣,B⽤⼾对历史、新闻⽐较感兴趣,这些兴趣点可以被抽象为标签。有了这些数据就可以得到喜欢同⼀个标签的⼈,以及⽤⼾的共同喜好的标签,这些数据对于增强⽤⼾体验和⽤⼾黏度都⾮常有帮助。

例如⼀个电⼦商务⽹站会对不同标签的⽤⼾做不同的产品推荐

⭕总结

关于《【Redis】 关于 Redis 集合类型》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/652413.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软件设计师】——5.数据库系统

目录 5.1 基本概念 5.2 三级模式两级映射 5.3 设计过程和数据模型 5.4 关系代数 5.5 完整性约束 5.6 规范化和反规范化 5.7 控制功能 5.8 SQL语言 5.9 数据库安全 5.10 数据备份 5.11 数据库故障与恢复 5.12 数据仓库、数据挖掘和大数据 5.1 基本概念 相关术语 候选…

python 办公自动化-生成ppt文本和图

最终样式 代码实现 # 可编辑折线+写入文字 成功 # 问题: 设置字体类型和加粗和字体为微软雅黑,是只改了字母和数字的字体,中文没变化 pip install pptx_ea_font 这个库可以解决这个问题 import pandas as pd import pptx_ea_font import matplotlib.pyplot as plt from pp…

深入学习 torch.distributions

0. 引言 前几天分几篇博文精细地讲述了《von Mises-Fisher 分布》, 以及相应的 PyTorch 实现《von Mises-Fisher Distribution (代码解析)》, 其中以 Uniform 分布为例简要介绍了 torch.distributions 包的用法. 本以为已经可以了, 但这两天看到论文 The Power Spherical dist…

瑞士初创公司着手开发世界上第一台活体处理器

前言 研究人员首次提供了一个在线远程平台,用于对生物神经元进行实验。瑞士生物计算初创公司FinalSpark推出了Neuroplatform,该项目使用16个人脑类器官来开发所谓的世界上第一个活体处理器,也称为生物处理器。 用于 Neuroplatform 的多电极阵…

基于Java+SpringBoot+Mybaties-plus+Vue+elememt + uniapp 新闻资讯 的设计与实现

一.项目介绍 本系统分为 后端 和 小程序端 后端:点击登录按钮 设置个人中心、 管理员账号数据维护、 基础数据维护、 短视频信息维护(包括查看短视频留言、短视频收藏)、 论坛维护(增删改查帖子信息,包括查…

对于高速信号完整性,一块聊聊啊(15)

此实例所用软件为ADS软件,ADS可以做有源、无源仿真,也可以做前仿、后仿仿真。需要注意前仿还没有PCB板子,所以都是手动直连,不需要导入模型。 本文将搭建一个前仿无源链路。 1)、在当前工作空间下新建原理图&#xf…

【yolov10】使用自己的数据集训练目标检测模型

【yolov10】使用自己的数据集训练目标检测模型 一、anaconda安装二、环境配置三、数据集制作1、labelimg的安装2、使用labelimg 四、正片1、下载yolov10源码2、数据集目录3、训练4、推理 一、anaconda安装 直接参考前一篇博客: https://blog.csdn.net/m0_71523511/…

网易面试:手撕定时器

概述: 本文使用STL容器-set以及Linux提供的timerfd来实现定时器组件 所谓定时器就是管理大量定时任务,使其能按照超时时间有序地被执行 需求分析: 1.数据结构的选择:存储定时任务 2.驱动方式:如何选择一个任务并执…

CC工具箱使用指南:【淹没区分析(BHM)】

一、简介 群友定制工具。 这个工具适用面比较小。 工具的应用场景如下: 提供一个淹没区范围,类型是面要素。统计这个范围内的一些线、面要素的面积或长度。 给定的几个数据有:耕地、永久基本农田、房台、道路(线)…

LeetCode - 贪心算法 (Greedy Algorithm) 集合 [分配问题、区间问题]

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/139242199 贪心算法,是在每一步选择中,都采取当前状态下,最好或最优(即最有利)的选择&…

【MySQL】库的操作+表的操作

库的操作表的操作 1.库的操作1.1创建数据库1.2删除数据库1.3查找数据库1.4修改数据库1.5数据库备份和恢复1.6查看连接情况 2.库的操作2.1创建表2.2查看表结构2.3修改表2.4删除表 点赞👍👍收藏🌟🌟关注💖💖 …

Petalinux 制作ZYNQ镜像文件流程

1概述 在Zynq-7000 SoC中搭建运行Linux,嵌入式软件栈。 处理器系统引导是一个分两个阶段的过程。第一个阶段是一个内部 BootROM,它存储 stage-0 的引导代码。BootROM 在 CPU 0 上执行,CPU 1 执行等待事件(WFE)指令。…

单片机通信协议(1):SPI简介

关于SPI SPI(串行外设接口)是板载设备间通信接口之一。它是由摩托罗拉公司(飞思卡尔半导体)推出的。由于其简单性和通用性,它被纳入各种外围设备中,并与飞利浦I2C总线并列。 SPI的三线或四线信号数量比IIC…

connection problem,giving up

参考: https://zhuanlan.zhihu.com/p/93438433 仅仅安装 sudo apt-get install xrdp 在用RDP远程的时候总是卡在登录界面,connection problem,giving up, some problem… 第一步: sudo apt-get install xserver-xorg-core sudo…

接口性能测试复盘:解决JMeter超时问题的实践

在优化接口并重新投入市场后,我们面临着一项关键任务:确保其在高压环境下稳定运行。于是,我们启动了一轮针对该接口的性能压力测试,利用JMeter工具模拟高负载场景。然而,在测试进行约一分钟之后,频繁出现了…

【OpenVINO™】在C#中使用 OpenVINO™ 部署 YOLOv10 模型实现目标

文章目录 1. 前言1.1 OpenVINO™ C# API1.2 YOLOv10 2. 模型获取2.1 源码下载2.2 配置环境2.3 下载模型 3. Yolov10 项目配置3.1 项目创建与环境配置3.2 定义模型预测方法3.2.1 定义目标检测模型方法3.2.2 使用OpenVINO™ 预处理接口编译模型 3.2 模型预测方法调用 4. 项目运行…

在Linux中 --help 和 -h 的区别

在Linux命令行工具中,--help 和 -h(而不是 -help)是常见的选项,用于显示工具的帮助信息。 --help: 这是一个长选项(long option),用于提供详细的帮助信息。许多工具都支持这个选项。…

这款信创FTP软件,可实现安全稳定的文件传输

信创,即信息技术应用创新,2018年以来,受“华为、中兴事件”影响,国家将信创产业纳入国家战略,并提出了“28n”发展体系。“8”具体指金融、石油、电力、电信、交通、航空航天、医院、教育等主要行业。目前企业使用比较…

ElementPlus-日期选择器实现周选择

ElementPlus的日期选择器实现周选择,并且显示的是日期范围,其效果如下: 首先修改中文语言环境,否则日期选择器是从周日开始的。在main.js文件中加上以下代码: import ElementPlus,{dayjs as elDayjs} from element-…

【包邮送书】你好!C语言

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…