【Redis】Set类型常用命令

目录

  • 一. Set集合类型简介.
  • 二. 增加元素相关命令
    • 2.1 向集合中添加元素(sadd)
    • 2.2 从集合中移动元素( smove )
  • 三. 查询元素相关操作.
    • 3.1 查询集合中存在的所有元素.( smembers )
    • 3.2 查询集合中是否存在member( sismember )
  • 四. 随机获取集合中的元素
    • 4.1 随机获取集合中的n个元素.(srandmember)
  • 五. 删除元素相关操作
    • 5.1 随机删除集合中的n个元素( spop )
    • 5.2 指定删除集合中的n个元素.(srem)
  • 六. 集合运算的相关操作.
    • 6.1 求集合交集的操作(sinter)--->直接返回交集的结果
    • 6.2 求集合交集的操作(sinterstore)---->将返回结果存储到另一个集合当中.
    • 6.3 求集合并集的操作(sunion)---->直接返回并集的结果
    • 6.4 求集合并集的操作(sunionstore)---->将返回结果存储到另一个集合当中
    • 6.5 求集合差集的操作(sdiff)--->直接返回差集的结果
    • 6.6 求集合差集的操作(sdiffstore)--->将返回结果存储到另一个集合当中

一. Set集合类型简介.

  • Redis中Set类型是一种集合数据结构, Set集合中存储的元素是不允许重复的.
  • Set类型的特征:
    1. 无序性: Set中的元素是无须的, 这意味着你不能通过索引来访问(每次查询同一个元素在Set集合中的位置都是不固定的)
    2. 唯一性: Set中的每个元素都是唯一的, 不允许有重复的元素.
    3. 动态性: 可以随时向Set中添加或者删除元素.
  • Redis底层的存储结构:
    1. intset(整数集合): 当一个Set集合只包含整数值元素,并且这些元素的个数不超过512个时,Redis会使用intset作为底层存储结构。intset内部实际上是一个数组,用于存储整数类型的数据。由于数组是有序的,因此在查找数据时可以通过二分查找法实现快速查询,时间复杂度接近O(log n)。
    2. hashtable(哈希表): 如果Set集合的元素不全是整数或者元素数量超过512个,Redis则会使用hashtable作为底层存储结构。在hashtable中,key为Set的值,value始终为null。这种设计使得Set能够高效地进行添加、删除和查找操作,因为哈希表的平均时间复杂度为O(1)。
      在这里插入图片描述

二. 增加元素相关命令

2.1 向集合中添加元素(sadd)

  • 命令基本格式:

SADD key member [member ...]

  • 时间复杂度

O(N) N是member的元素个数, 一般可以近似看作是O(1)

  • 演示命令的使用:
    在这里插入图片描述

2.2 从集合中移动元素( smove )

  • 命令基本格式:

SMOVE source destination member

  • 时间复杂度

O(1)

  • 演示命令的使用:
    在这里插入图片描述

三. 查询元素相关操作.

3.1 查询集合中存在的所有元素.( smembers )

  • 命令基本格式:

SMEMBERS key

  • 时间复杂度

O(N) N为集合中元素的个数.

  • 演示命令的使用:
    在这里插入图片描述

3.2 查询集合中是否存在member( sismember )

  • 命令基本格式:

SISMEMBER key member

  • 时间复杂度

O(1)

  • 演示命令的使用:
    在这里插入图片描述

四. 随机获取集合中的元素

4.1 随机获取集合中的n个元素.(srandmember)

  • 命令基本格式:

SRANDMEMBER key [count]

  • 时间复杂度

O(N) N是count的值, 一般可以近似看作是O(1)

  • 演示命令的使用:
    在这里插入图片描述

五. 删除元素相关操作

5.1 随机删除集合中的n个元素( spop )

  • 命令基本格式:

SPOP key [count]

  • 时间复杂度

O(N) N是count的值, 一般可以近似看作是O(1)

  • 演示命令的使用:
    在这里插入图片描述

5.2 指定删除集合中的n个元素.(srem)

  • 命令基本格式:

SREM key member [member ...]

  • 时间复杂度:

O(N) N是要移除元素的个数, 一般可以近似看作是O(1)

  • 演示命令的使用:
    在这里插入图片描述

六. 集合运算的相关操作.

6.1 求集合交集的操作(sinter)—>直接返回交集的结果

  • 命令基本格式:

SINTER key [key ...]

  • 时间复杂度:

O( N*M ) N表示这些集合当中最小集合的元素个数, M表示求交集的集合个数.

6.2 求集合交集的操作(sinterstore)---->将返回结果存储到另一个集合当中.

  • 命令基本格式:

SINTERSTORE destination key [key ...]

  • 时间复杂度:

O( N*M ) N表示这些集合当中最小集合的元素个数, M表示求交集的集合个数.

  • 演示命令的使用:
    在这里插入图片描述

6.3 求集合并集的操作(sunion)---->直接返回并集的结果

  • 命令基本格式:

SUNION key [key ...]

  • 时间复杂度:

O(N) 其中N是给定集合中所有元素的个数.

6.4 求集合并集的操作(sunionstore)---->将返回结果存储到另一个集合当中

  • 命令基本格式:

SUNIONSTORE destination key [key ...]

  • 时间复杂度:

O(N) 其中N是给定集合中所有元素的个数.

  • 演示命令的使用:
    在这里插入图片描述

6.5 求集合差集的操作(sdiff)—>直接返回差集的结果

  • 命令基本格式:

SDIFF key [key ...]

  • 时间复杂度:

O(N) 其中N是所有给定集合中元素的总数。

6.6 求集合差集的操作(sdiffstore)—>将返回结果存储到另一个集合当中

  • 命令基本格式:

SDIFFSTORE destination key [key ...]

  • 时间复杂度:

O(N) 其中N是所有给定集合中元素的总数。

  • 演示命令的使用:
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于单片机的穿戴式泳池遇险紧急呼救系统的设计

本计基于单片机的穿戴式泳池遇险紧急呼救系统装置。该装置采用STC12C5A60S2单片机与心率检测模块MAX30102的一体化脉冲血氧分析仪和心率监测器,对人体的心跳进行了实时检测。该装置由发送端和接收端两部分组成,中间由LORA无线通信模块进行数据传输&#…

C语言刷题 LeetCode 30天挑战 (十)Stack 栈 (MinStack)

这个题目要求你设计一个特殊的栈(MinStack),不仅要具备普通栈的基本功能(push、pop 和 top),还要能够在常数时间内(O(1) 时间复杂度)获取栈中的最小元素(getMin&#xff…

curl执行报【先没有那个文件或目录】解决办法

开发微信发过了curl命令后,执行报错 是空格导致的,解决办法是打开下面网址重新输入空格即可 在线curl命令转代码 删除这个空格 重新输入空格

『网络游戏』服务器向客户端分发消息【20】

对服务器添加System引用 修改脚本:LoginSys.cs 修改脚本:NetSvc.cs 修改脚本:ServerSession.cs 修改脚本:GameMsg.cs 修改脚本:MsgPack.cs 修改脚本:LoginSys.cs 修改脚本:ServerRoot.cs 修改脚…

java随机生成数学算式

生成随机数学算式可谓是计算机领域的一个经典的问题, 本文使用JFrame,JButton,JTextField等java图形化工具,生成一个可以随机切换题目,可以实现计时功能的一个图形化界面 源代码展示 randomMath类 package login;import javax.swing.*; import java.awt.*; import java.awt.e…

运筹说 第126期 | 存储论经典例题讲解——随机存储模型

通过上一期,我们已经学习了确定型存储论模型在经济管理中的应用,但其忽略了现实中的随机性和不确定性因素,本期小编选择了一些考虑不确定因素的随机存储模型的典型例题,进行详细讲解。 单周期的随机型存储模型 单周期的随机型存储…

基于STM32的“Flash闪存”基础 及 “SD NAND Flash”测试例程

文章目录 一、“FLASH闪存”是什么? 简介 分类 特点 虚拟化 二、SD NAND Flash 概述 引脚分配 数据传输模式 SD NAND寄存器 通电图 参考设计 三、STM32测试例程 本篇除了对flash闪存进行简单介绍外,另给读者推荐一种我本人也在用的小容量闪…

STM32 USB CUBEMX

开发背景 使用的平台:STM32H750 注意事项 时钟必须是48MHZ,其它都不行 2. 将默认任务的堆栈设大一点 如果使用操作系统,USB任务跑在默认任务里,因此需要设置默认任务的堆栈缓存是直接定义的全局变量,需要设置编译器…

【windows Server 2012】把我的电脑放在桌面

WinR 打开命令输入框 输入 rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0

Vue+Vant实现7天日历展示,并在切换日期时实时变换

效果图&#xff1a; 主要使用 moment.js 插件完成 HTML部分 <div class"day-content"><div class"day-content-t"><div>{{ monthVal }}</div><div click"onCalendar()">更多>></div></div><…

月入8.3K,电子厂普工转行网优,每个人都可以是潜力股!

今天主人公只有22岁&#xff0c;大专学历&#xff0c;毕业之后一直在芯片厂从事流水线工作&#xff0c;枯燥烦闷的生活让他下定决心转行&#xff0c;目前收到一份薪资8300元的offer&#xff0c;让我们一起来看看他的故事~ 1 为什么选择网优行业&#xff1f; 大学我学的软件技术…

DAY6 面向对象

概念 对象是一种特殊的数据结构&#xff0c;可以用来记住一个事物的数据&#xff0c;从而代表该事物&#xff0c;可以理解为一个模板表&#xff0c;总而言之万物皆对象&#xff0c;比如一个人、一个物体等。 怎么创建对象 先设计对象的模板&#xff0c;也就是对象的设计图&a…

影视飓风全平台下架引思:录屏分辨率与码率科普及实用软件推荐

在影视飓风10月8日发布视频《清晰度不如4年前!视频变糊是你的错觉吗》后&#xff0c;引发了很多关于视频清晰度的讨论。 有知乎用户总结提出现在在线视频被降画质的几个点&#xff1a;一是原始视频上传到服务器就被压缩&#xff0c;虽分辨率看似不变&#xff0c;但如 H.265 等高…

【SQL】收入更高的员工

目录 语法 需求 示例 分析 代码 语法 FROM Employee a, Employee b 两个表之间笛卡尔积&#xff08;Cartesian product&#xff09;的形式&#xff0c;用了逗号分隔的连接&#xff08;comma-separated join&#xff09;&#xff0c;这是早期SQL语法中用于连接表的一种方式…

TikTok 伪装度分析:揭开社交媒体的真实面纱

在现代社交媒体中&#xff0c;TikTok凭借其短视频的形式和算法推荐的机制&#xff0c;迅速吸引了大量用户。然而&#xff0c;随着用户基数的扩大&#xff0c;平台上的内容呈现出多样化的趋势&#xff0c;而“伪装度”这一概念也逐渐成为我们分析TikTok内容质量和用户行为的重要…

SpringBoot使用esayExcel根据模板导出excel

1、依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.3</version></dependency> 2、模板 3、实体类 package com.skybird.iot.addons.productionManagement.qualityTesting…

泰始明昌文旅:如何打造真正的文旅爆品体系

泰始明昌文旅&#xff1a;如何打造真正的文旅爆品体系 泰始明昌文旅&#xff1a;如何打造真正的爆品体系 关键词&#xff1a;泰始明昌文旅,文旅爆品,核心卖点,用户痛点,项目特点,对手弱点,爆品体系,爆品品类,结构化,品质,价值链接,生态体系,营销推广,持续创新 摘要&#xff…

接口和多态

接口 概念 接口是功能的集合&#xff0c;它同样是一种引用数据类型&#xff0c;可以把接口看作抽象类更为抽象的 "类"。 接口只描述所应该具备的功能方法&#xff0c;但是没有具体的方法实现&#xff0c;即接口中具有的都是抽象方法&#xff0c;这些抽象方法的实现是…

美发店业务流程优化:SpringBoot管理系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

Java | Leetcode Java题解之第468题验证IP地址

题目&#xff1a; 题解&#xff1a; class Solution {public String validIPAddress(String queryIP) {if (queryIP.indexOf(.) > 0) {// IPv4int last -1;for (int i 0; i < 4; i) {int cur (i 3 ? queryIP.length() : queryIP.indexOf(., last 1));if (cur <…