88、Redis 的 value 所支持的数据类型(String、List、Set、Zset、Hash)---->Set相关命令

news2024/12/23 10:54:16

本次讲解要点:
** Set相关命令:是指value中的数据类型**

启动redis服务器:
打开小黑窗:
C:\Users\JH>e:
E:>cd E:\install\Redis6.0\Redis-x64-6.0.14\bin
E:\install\Redis6.0\Redis-x64-6.0.14\bin>redis-server.exe redis.windows.conf

启动redis客户端:
小黑窗:redis-cli

★ Redis的数据类型(都是针对Redis的value而言)

redis和map差不多。
Map 只能保存在内存中,
redis可以保存在磁盘。

Redis的key都是String

▲ value支持如下5种数据类型:

String: 最基本的数据类型,可保存任何的数据。
List: 元素是String的有序集合,集合内的元素可以重复。
Set: 元素是String的无序集合,集合内的数据不能重复。
Zset: 元素是String的有序集合,集合内的数据不能重复。
Hash: 也是key-value集合(类似Java的Map),key和value都是String类型的数据。这种类型主要用于保存对象。

Redis为不同数据类型提供了不同的操作命令,因此特定类型的数据需要使用对应类型的命令来执行操作。

source:源
destination:目标

★ Set相关的命令:

当 value 是 Set类型 时,需要使用 Set相关的命令进行操作。

Set代表无序、元素不能重复的集合,因此Set中的元素都是唯一的。
Set最多可包含2^32-1个元素。Set底层其实是通过Hash表实现的,因此它的删除、查找的复杂度都是 O(1),性能很好。

SADD key member [member …]: 向key对应的Set添加一个或多个元素。

SCARD key: 返回key对应的Set中元素的个数。

SDIFF key [key …]: 计算多个Set之间的差值。
所谓差值,其实就是减去两个Set之间的公共部分(交集)
该命令对于两个key对应Set本身并没有修改,这是该命令会返回它们的差值。

SDIFFSTORE destination key [key …]: SDIFF的存储版本,将多个Set的差值保存到destination中。

SINTER key [key …]: 返回给定Set的交集。
该命令对于两个key对应Set本身并没有修改,这是该命令会返回它们的交集。

SINTERSTORE destination key [key …]: SINTER的存储版本,将给定Set的交集保存到destination中。

SISMEMBER key member: 判断member是否为key对应Set的元素。

SMEMBERS key: 返回key对应Set的全部元素。

SMOVE source destination member: 将source中的member元素移到destination中。
如果destination 对应Set不存在,该命令会创建一个新的Set。

SPOP key [count]: 弹出key对应Set中随机的一个元素。

SRANDMEMBER key [count]: 返回key对应Set中随机的count个元素(不删除元素)。

SREM key member [member …]: 删除key对应Set中的一个或多个元素。

SUNION key [key …]: 计算给定Set的并集。
并集:将多个Set拼接在一起,但多个Set重复的元素只保留一份。

SUNIONSTORE destination key [key …]: SUNION的存储版本,将给定Set的并集保存到destination中。

SSCAN key cursor [MATCH pattern] [COUNT count]: 使用cursor遍历key对应的Set。
pattern指定只遍历匹配pattern的元素,count指定最多只遍历count个元素。

 cursor代表一个游标,记录了遍历Set的位置,关于cursor的要点:

 ▲ 第一次遍历时通常将cursor设为0。

 ▲ 执行该命令后会返回当前的cursor值(记录了遍历的位置),只要该cursor不为0,表明遍历还未结束。

 ▲ 如果你希望继续接着上一次sscan的结果继续遍历,你传入的cursor就应该是上次sscan所返回的cursor值。

 count参数的默认值为10,count并不能精确控制所返回的元素的个数。
                        count控制的是底层hash Slot的值,count控制要遍历底层Hash Slot的个数。

                       从外观上来看,此处设置的count只是一个建议值,并不代表Redis此次遍历会返回的元素个数。

演示

SADD key member [member …]: 向key对应的Set添加一个或多个元素。
在这里插入图片描述

SCARD key: 返回key对应的Set中元素的个数。
在这里插入图片描述

SDIFF key [key …]: 计算多个Set之间的差值。
所谓差值,其实就是减去两个Set之间的公共部分(交集)
该命令对于两个key对应Set本身并没有修改,只是该命令会返回它们的差值。
在这里插入图片描述

SDIFFSTORE destination key [key …]: SDIFF的存储版本,将多个Set的差值保存到destination中。
在这里插入图片描述

SINTER key [key …]: 返回给定Set的交集。
该命令对于两个key对应Set本身并没有修改,这是该命令会返回它们的交集。
在这里插入图片描述

SINTERSTORE destination key [key …]: SINTER的存储版本,将给定Set的交集保存到destination中。
在这里插入图片描述

SISMEMBER key member: 判断member是否为key对应Set的元素。
在这里插入图片描述

SMEMBERS key: 返回key对应Set的全部元素。
在这里插入图片描述

SMOVE source destination member: 将source中的member某个元素移到destination中。
如果destination 对应Set不存在,该命令会创建一个新的Set。
不能移动自定义的元素个数
在这里插入图片描述

SPOP key [count]: 弹出key对应Set中随机的一个元素。
在这里插入图片描述
在这里插入图片描述

SRANDMEMBER key [count]: 返回key对应Set中随机的count个元素(不删除元素)。
在这里插入图片描述

SREM key member [member …]: 删除key对应Set中的一个或多个元素。
在这里插入图片描述

SUNION key [key …]: 计算给定Set的并集。
并集:将多个Set拼接在一起,但多个Set重复的元素只保留一份。
在这里插入图片描述

SUNIONSTORE destination key [key …]: SUNION的存储版本,将给定Set的并集保存到destination中。
在这里插入图片描述

SSCAN key cursor [MATCH pattern] [COUNT count]: 使用cursor遍历key对应的Set。

pattern指定只遍历匹配pattern的元素,count指定最多只遍历count个元素。

cursor代表一个游标,记录了遍历Set的位置,关于cursor的要点:

 ▲ 第一次遍历时通常将cursor设为0。

 ▲ 执行该命令后会返回当前的cursor值(记录了遍历的位置),只要该cursor不为0,表明遍历还未结束。

 ▲ 如果你希望继续接着上一次sscan的结果继续遍历,你传入的cursor就应该是上次sscan所返回的cursor值。

 count参数的默认值为10,count并不能精确控制所返回的元素的个数。
                       count控制的是底层hash Slot的值,count控制要遍历底层Hash Slot的个数。

   从外观上来看,此处设置的count只是一个建议值,并不代表Redis此次遍历会返回的元素个数。

count参数的默认值为10,count并不能精确控制所返回的元素的个数。
count 用来表示每次遍历的元素个数,但是并不能精确控制所返回的元素的个数
在这里插入图片描述

在这里插入图片描述
count 用来表示每次遍历的元素个数,但是并不能精确控制所返回的元素的个数
解释:
count控制的是底层hash Slot的值,count控制要遍历底层Hash Slot的个数。
从外观上来看,此处设置的count只是一个建议值,并不代表Redis此次遍历会返回的元素个数。

set 底层是通过 hash 表来实现的。
hash表 的底层其实就是一个数组。
hash表就是一个数组,数组的每一个元素就是一个slot
在这里插入图片描述

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

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

相关文章

智慧能源:引领未来的能源革命

在当今世界,能源问题是一个备受关注的焦点话题。随着全球人口的不断增长和工业化进程的加速,对能源的需求也日益增加,同时,传统的能源资源面临着日益严重的枯竭和环境污染问题。在这一背景下,智慧能源应运而生&#xf…

vite跨域proxy设置与开发、生产环境的接口配置,接口在生产环境下,还能使用proxy代理地址吗

文章目录 vite的proxy开发环境设置如果后端没有提供可以替换的/mis等可替换的后缀的处理办法接口如何区分.env.development开发和.env.production生产环境接口在生产环境下,还能使用proxy代理地址吗? vite的proxy开发环境设置 环境: vite 4…

服务断路器_服务雪崩解决方案之服务隔离

那显而易见,做服务隔离的目的就是避免服务之间相互影响。毕竟谁也不能说自己的微服务百分百可用,如果不做隔离,一旦一个服务出现了问题,整个系统的稳定性都会受到影响! 因此,做服务隔离是很有必要的。 什么…

消费者偏移量_consumer_offsets相关解析

1.概述 __consumer_offsets 是 kafka 自行创建的,和普通的 topic 相同。它存在的目的之一就是保存 consumer 提交的位移。 __consumer_offsets 的每条消息格式大致如图所示: 可以想象成一个 KV 格式的消息,key 就是一个三元组:group.idtopi…

成都睿趣科技:抖音开通橱窗带货需要钱吗

随着社交媒体和电子商务的蓬勃发展,抖音作为一种流行的短视频平台,也推出了自己的“抖音橱窗”功能,让内容创作者能够通过视频展示和销售产品,从而实现商业化。那么,抖音橱窗带货是否需要费用呢? 首先,要开…

现代数据架构-湖仓一体

当前的数据架构已经从数据库、数据仓库,发展到了数据湖、湖仓一体架构,本篇文章从头梳理了一下数据行业发展的脉络。 上世纪,最早出现了关系型数据库,也就是DBMS,有商业的Oracle、 IBM的DB2、Sybase、Informix、 微软…

关于坐标的旋转变换和坐标系的旋转变换

不管是坐标的旋转变换还是坐标系下的旋转变换,只和旋转的顺时针和逆时针有关。然坐标系间的顺时针和逆时针是根据当前坐标系在目标坐标系下的相对位置确定。 一。逆时针旋转belta角度的公式 二。顺时针旋转belta角度的公式 三。坐标的旋转变换 1.坐标的旋转变换相…

一文了解企业如何实现文件自动化实时同步

在当今的数字化时代,数据是企业的核心资产,也是企业竞争力的重要体现。数据的传输、共享、协作、备份等都需要依赖文件同步技术,实现数据在不同平台和设备之间的一致性和可用性。文件同步是指将一个或多个文件夹中的内容复制或更新到另一个或…

网络安全攻防:软件逆向之反汇编

网络安全是当今社会中一个非常重要的问题,而软件逆向工程是网络安全攻防中常用的一种技术手段。在软件逆向工程中,反汇编是一种基础而重要的技术。通过反汇编,我们可以将二进制程序转换为汇编语言,从而更好地理解程序的执行流程和…

在伦敦银投资中,技术是万能的?

一般进行伦敦银投资的投资者都会学习很多技术分析的方法,技术分析是一种还很适合普通投资者使用的市场分析工具,但是在伦敦银投资中,技术分析的作用不是万能的,其实技术分析还是有很多各种各样的缺点,如果投资者迷信技…

前缀和实例5(连续数组)

题目: 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。 示例 1: 输入: nums [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。 示例 2: 输入: nums [0,1,0] 输出: 2 说明: [0…

Exception in thread “main“ java.sql.SQLException: No suitable driver

详细报错信息如下: Exception in thread "main" java.sql.SQLException: No suitable driver at java.sql.DriverManager.getDriver(DriverManager.java:315) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.$anonfun$driverC…

js遍历对象属性的方法

在 JavaScript 中,有许多方法可以遍历对象的属性,但在性能上并没有显著的差异。对于大多数用例,使用 for-in 循环或 Object.keys() 方法是最常见的。 然而,如果你正在寻找微优化,并希望遍历大量对象,可以考…

数字孪生需要自建3D模型?搞懂Blender建模要点,看这篇文章就够了!

1. Blender的基础介绍 关于城市大师的建模软件,一般推荐使用Blender。一是因为Blender是开源免费的,不会有经济负担,二是因为我们软件有针对Blender的插件,对其进行了一定程度上的补充。 【温馨提示】如果使用的是3Dmax或者maya…

Zabbix“专家坐诊”第205期问答汇总

问题一 Q:Zabbix6.0安装出错,未找到zabbix-server的配置文件。 A:Find / -name zabbix-server.conf,试一下 Q:找到了。 Q:配置好了,虚拟化平台监控还是不行。 A:因为虚拟化监控用的…

PL/SQL+cpolar公网访问内网Oracle数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…

python生成Markdown文件

我们使用的库是markdown_strings pip install markdown_strings程序如下: from markdown_strings import header, table, code_blockwith open("mark_down.md", w, encoding"utf8") as file:file.write(header("一级目录", 1) &qu…

python抓取网页视频

1. 喜马拉雅音频 1-1 喜马拉雅 import requests import json import time import random import hashliburl https://www.ximalaya.com/revision/play/v1/audio?id46103875&ptype1headers { user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.3…

法线贴图的原理和作用

在上一篇文章中详细介绍了位移贴图的相关知识,在本章中我们继续讲述法线贴图的相关概念,文章后面继续用GLTF 编辑器 来演示下法线贴图的模型渲染效果。 1、什么是法线贴图 法线贴图(Normal Map)是一种纹理映射技术,用…

DAY04_瑞吉外卖——文件上传下载菜品新增菜品分页查询菜品修改

目录 1. 文件上传下载1.1 上传介绍1.1.1 概述1.1.2 前端介绍1.1.3 服务端介绍 1.2 下载介绍1.3 上传代码实现1.3.1 前端代码1.3.2 服务端实现1.3.3 测试 1.4 下载代码实现1.4.1 前端代码1.4.2 服务端代码1.4.3 测试 2. 菜品新增2.1 需求分析2.2 数据模型2.3 准备工作2.4 前端页…