当前位置: 首页 > news >正文

Redis中Set类型的操作

Set的结构与list相似,但底层存储结构是hashtable,因此它的值是唯一的,同时添加的顺序与保存的顺序并不一致。每一个Set类型的key中可以存储2^32-1个元素。

一、应用场景
1、保存用户的收藏

    在小说网站中保存用户的收藏,收藏 的小说并不需要保存收藏的顺序,但收藏过的小说不会再被收藏。

2、关注和粉丝列表

    可用于保存某个用户的关注和粉丝列列表,还可以获得两个列表的交集、并集和差集。

3、文章标签或关键字

    在上传视频,商品等可以添加关键字,关键字不能重复

4、记录空间的访问用户

    记录某人的博客或是某篇文章有哪些人访问过。

二、添加值
1、添加一个或多个元素

    一次添加一个或多个元素,已存在元素会忽略,不存在的元素会被添加,最终返回添加的元素的数量

语法

sadd key member [member ...]

示例

//添加zhangshan的关注者
sadd follow:zhangshan wangwu zhaosi

三、删除值

1、删除并返回指定数量的元素

    由于Set中元素是无序的,因此使用此方法并不知道会删除哪些元素,可以认为是随机的。

语法

spop key [count]

示例

//删除并返回两个元素
spop follow:zhangshan 2

2、删除指定的元素

    删除指定的元素,返回实际删除的元素的数量

语法

srem key member [member ...]

示例

//删除 lisi和wangwu两个关注者
srem follow:zhangshan lisi wangwu

四、查询
1、返回元素的数量

语法

scard key

示例

//获取zhangshan的关注人数
scard follow:zhangshan

2、判断指定的元素是否存在

    判断指定的元素是否存在,如果存在返回1,不存在返回0

语法

sismember key member

示例

//判断lisi是否是zhangshan的关注者
sismember follow:zhangshan lisi

3、返回所有元素

    如果key不存在或是没有元素返回空值,如果存在返回元素列表

语法

smembers key

示例

//返回zhangshan的所有关注者
smembers follow:zhangshan

4、返回多个元素

    此返回的元素是随机的,如果没有元素或是key不存在,返回空值

语法

srandmember key [count]

示例

//随机返回两个zhangshan的关注者
srandmember follow:zhangshan 2

5、使用游标根据条件查询元素

语法

sscan key cursor [MATCH pattern] [COUNT count]

其中

coursor为上次游标的结束位置,一般为0

match为查询条件,模糊部分使用“*”号代替

count为返回的数量,当值小于元素数量很多时,可能会返回超出指定数量的元素

示例

//返回zhangshan的第一个关注者,但实际可能会返回多个
sscan follow:zhangshan 0 count 1

五、交、并和差集处理
1、差集

1)返回第一个集合与其他集合之间的差异

    返回第一个集合中存在,但其它集合中不存在的元素,否则返回空。

语法

sdiff key [key ...]

示例

//第一个集合
sadd set1 v1 v2 v3
//第二个集合
sadd set2 v1 v3 v4
//获取在第一个集合中存在,而第二个集合中不存在的元素
sdiff set1 set2

2)把各集合的差异保存到新的集合中

    把第一个集合中存在,但其它集合中不存在的元素保存到新集合中

语法

sdiffstore destination key [key ...]

示例

//v4
sdiffstore set3 set2 set1
//v2
sdiffstore set4 set1 set2

2、并集

3)返回并集

    返回多个集合中不同的元素的合集

语法

sunion key [key ...]

示例

//"v3""v4""v1""v2
SUNION set1 set2

2)把并集保存到新集合中

语法

sunionstore destination key [key ...]

示例

sunionstore set5 set1 set2

smembers set5

3)交集

1)返回多个集合中相同的元素

语法

sinter key [key ...]

示例

//"v3""v1"
sinter set1 set2

2)把多个集合中相同的元素保存到新的集合中

语法

sinterstore destination key [key ...]

示例

sinterstore set6 set1 set2

smembers set6

 文章来源于哔站《Redis中Set类型的操作》

更多学习视频和专栏文章请到哔站个人空间: 布道师学院的个人空间-布道师学院个人主页-哔哩哔哩视频

更多资源和项目下载请到:”开源吧(找实战项目和毕设项目的好网站)“ ​ :开源吧

相关文章:

Redis中Set类型的操作

Set的结构与list相似,但底层存储结构是hashtable,因此它的值是唯一的,同时添加的顺序与保存的顺序并不一致。每一个Set类型的key中可以存储2^32-1个元素。 一、应用场景 1、保存用户的收藏 在小说网站中保存用户的收藏,收藏 的小…...

正确完成实时 AI

发表于 构建真实世界的实时 AI 一、说明 我们知道,当前的AI进展是扎根于历史数据,这就造成一个事实,模型总是赶不上实时进展,模型的洞察力不够尖锐,或者,时间损失等,本篇对这一系列AI的短板展开…...

深度学习笔记之线性代数

深度学习笔记之线性代数 一、向量 在数学表示法中,向量通常记为粗体小写的符号(例如,x,y,z)当向量表示数据集中的样本时,它们的值具有一定的现实意义。例如研究医院患者可能面临的心脏病发作风…...

Python与Scrapy:构建强大的网络爬虫

网络爬虫是一种用于自动化获取互联网信息的工具,在数据采集和处理方面具有重要的作用。Python语言和Scrapy框架是构建强大网络爬虫的理想选择。本文将分享使用Python和Scrapy构建强大的网络爬虫的方法和技巧,帮助您快速入门并实现实际操作价值。 一、Pyt…...

kind 安装 k8s 集群

在某些时候可能需要快速的部署一个k8s集群用于测试,不想部署复杂的k8s集群环境,这个时候我们就可以使用kind来部署一个k8s集群了,下面是使用kind部署的过程 一、安装单节点集群 1、下载kind二进制文件 [rootlocalhost knid]# curl -Lo ./kin…...

Leetcode 2871. Split Array Into Maximum Number of Subarrays

Leetcode 2871. Split Array Into Maximum Number of Subarrays 1. 解题思路2. 代码实现 题目链接:2871. Split Array Into Maximum Number of Subarrays 1. 解题思路 这一题实现上其实还是比较简单的,就是一个贪婪算法,主要就是思路上需要…...

Java基础---第十三篇

系列文章目录 文章目录 系列文章目录一、有数组了为什么还要搞个 ArrayList 呢?二、说说什么是 fail-fast?三、说说Hashtable 与 HashMap 的区别一、有数组了为什么还要搞个 ArrayList 呢? 通常我们在使用的时候,如果在不明确要插入多少数据的情况下,普通数组就很尴尬了,…...

Java 文档注释

Java 文档注释 目录 Java 文档注释 javadoc 标签 文档注释 javadoc输出什么 实例 Java只是三种注释方式。前两种分别是// 和/* */,第三种被称作说明注释,它以/** 开始,以 */结束。 说明注释允许你在程序中嵌入关于程序的信息。你可以使…...

【多媒体技术与实践】多媒体计算机系统概述

数码相机是利用___感受光信号, 使转换为电信号,再经模/数转换变成数字信号,存储在相机内部的存储器中。 选择一项: a. RGB b. OCR c. CCD d. MPEG 正确答案是:CCD 最基本的多媒体计算机是指安装了_部件的计算机。…...

DirectX 3D C++ 圆柱体的渲染(源代码)

作业内容 请勿抄袭 代码功能&#xff1a;渲染一个绕中心轴自转的圆柱体。要求该圆柱体高度为3.0&#xff0c;半径为0.5。 #include <windows.h> #include <d3d11.h> #include <d3dx11.h> #include <d3dcompiler.h> #include <xnamath.h> #incl…...

搭建前端框架

在终端进入web目录&#xff0c;然后创建vuecrud工程 创建工程并引入ElementUI和axios手把手教学>传送门:VueCLI脚手架搭建...

2310C++构造对象

原文 本文展示一个构造对象方式,用户无需显式调用构造器.对有参构造器类,该实现在构造改对象时传递默认值来构造. 当然用户也可指定(绑定)某个参数的值.实现思路参考boost-ext/di的实现.看下示例: 构 成员{整 x10; }; 构 成员1{整 x11; }; 类 例子1{ 公:例子1(成员 x,成员1 x…...

nginx多文件组织

背景&#xff1a; nginx的话&#xff0c;有时候&#xff0c;想部署多个配置&#xff0c;比如&#xff1a;使用不同的端口配置不同的web工程。 比如&#xff1a;8081部署&#xff1a;项目1的web页面。 8082部署&#xff1a;项目2的web页面。 1)nginx.conf worker_processes…...

扩容LVM卷导致lvm元数据丢失的恢复过程

一、问题描述 因某次MySQL binlog占用过高扩容时&#xff0c;是直接对云盘操作&#xff0c;而扩容直接操作了lvm卷而未操作云盘分区&#xff0c;并随后执行了扩容的partprobe&#xff0c;resize2fs卷等操作&#xff1b;最后&#xff0c;显示并未扩容成功&#xff0c;重启系统后…...

【MySQL教程】| (1-1) 2023MySQL-8.1.0 安装教程

文章目录 一、安装包下载二、安装配置1、解压安装包2、编写MySQL配置文件3、初始化MySQL数据库3、安装mysql服务并启动4、MySQL服务5、连接MySQL6、修改密码 三、配置环境变量四、防止mysql自启动拖慢开机时间 近日有粉丝问到mysql在win11的安装中遇到一些问题&#xff0c;应粉…...

数据大屏定时请求后端数据

需求&#xff1a; 因为大屏基本从上午展示到晚上&#xff0c;不会频繁去打开页面。 前端实现&#xff1a; 在Vue的created钩子函数中发送初次请求&#xff0c;并使用JavaScript中的setInterval函数来设置整点定时发送请求。以下是一个示例 <template><div><h1…...

数据结构--队列

一、队列是什么 队列是一种特殊的线性表&#xff0c;特殊之处在于它只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;进行插入操作&#xff0c;队列是一种操作受限制的线性表。进行插入操作的端称为队尾&…...

Python绘图系统25:新增8种绘图函数

文章目录 常用绘图函数单选框的更改逻辑源代码 Python绘图系统&#xff1a; 前置源码&#xff1a; Python打造动态绘图系统&#x1f4c8;一 三维绘图系统 &#x1f4c8;二 多图绘制系统&#x1f4c8;三 坐 标 轴 定 制&#x1f4c8;四 定制绘图风格 &#x1f4c8;五 数据生成导…...

(二) gitblit用户使用教程

(一)gitblit安装教程 (二) gitblit用户使用教程 (三) gitblit管理员手册 目录 网页访问git客户端设置推送错误配置查看当前配置 日常使用仓库分组my profile修改上传代码简洁 网页访问 点击Advanced... 点击Accept the Risk and Contiue 初始用户名和密码都是admin,点击login…...

8.3Jmeter使用json提取器提取数组值并循环(循环控制器)遍历使用

Jmeter使用json提取器提取数组值并循环遍历使用 响应返回值例如&#xff1a; {"code":0,"data":{"totalCount":11,"pageSize":100,"totalPage":1,"currPage":1,"list":[{"structuredId":&q…...

ARMv8 A64指令集内存访问优化与LDRH/LDRSB指令详解

1. A64指令集与内存访问基础在ARMv8架构中&#xff0c;A64指令集作为64位执行状态的核心指令系统&#xff0c;其内存访问指令的设计直接影响处理器性能。与32位的A32指令集相比&#xff0c;A64在寄存器数量、地址空间和指令编码等方面都有显著改进。1.1 ARMv8内存访问特点ARM架…...

从协议到代码:用Python仿真5G NR下行同步全流程(含PBCH解码与MIB解析)

从协议到代码&#xff1a;用Python仿真5G NR下行同步全流程&#xff08;含PBCH解码与MIB解析&#xff09; 在通信系统设计中&#xff0c;下行同步是终端接入网络的第一步关键操作。5G新空口(NR)技术引入了更复杂的同步信号结构&#xff0c;这对算法工程师和研究人员提出了更高要…...

VSCode + Cline + Codeium + OpenSpec + DeepSeek 完整配置指南

VSCode Cline Codeium OpenSpec DeepSeek 完整配置指南 &#x1f4cb; 最终方案概述 组件用途费用VSCode代码编辑器免费Codeium (Windsurf)Tab 补全 生成注释免费ClineAI Agent&#xff08;复杂任务、多文件操作&#xff09;免费OpenSpec规范驱动开发&#xff08;复杂功…...

市场营销Agent:自动生成内容与投放策略

市场营销Agent:自动生成内容与投放策略——从痛点分析到落地实践的全栈指南 引言 痛点引入 在数字营销的战场上,每天都有无数的团队在重复着「内容绞肉机」和「投放试错场」的噩梦: 内容产出端:为了覆盖小红书、抖音、知乎、微信公众号、TikTok、LinkedIn等数十个主流渠…...

Windows系统mqoa.dll文件丢失无法启动程序解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

告别龟速下载!用这个离线驱动包5分钟搞定DBeaver连接所有数据库

5分钟极速配置&#xff1a;DBeaver全量离线驱动包实战指南 每次打开DBeaver准备连接新数据库时&#xff0c;那个转个不停的驱动下载进度条是不是让你抓狂&#xff1f;尤其是在企业内网环境或网络不稳定时&#xff0c;等待驱动下载的过程简直能让人把咖啡喝成凉茶。今天要分享的…...

从CMake报错到编译成功:一站式解决absl依赖配置难题

1. 当CMake突然报错&#xff1a;absl依赖缺失的紧急处理 第一次看到这个报错时&#xff0c;我正赶着在截止日期前完成gRPC服务的部署。控制台突然弹出的红色错误让我心头一紧&#xff1a;"Could not find a package configuration file provided by absl"。这种依赖缺…...

5步快速搭建微信机器人:WeixinBot完整使用指南

5步快速搭建微信机器人&#xff1a;WeixinBot完整使用指南 【免费下载链接】WeixinBot 网页版微信API&#xff0c;包含终端版微信及微信机器人 项目地址: https://gitcode.com/gh_mirrors/we/WeixinBot 在当今自动化办公和智能交互的时代&#xff0c;拥有一个能够自动处…...

如何通过HS2-HF Patch解锁《Honey Select 2》的完整创作潜力:从新手到专家的终极指南

如何通过HS2-HF Patch解锁《Honey Select 2》的完整创作潜力&#xff1a;从新手到专家的终极指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为《Honey…...

一天怎么完成论文初稿

写论文这件事&#xff0c;从选题到完稿&#xff0c;哪一步都能卡掉你半条命。我身边不少读研读博的同学&#xff0c;白天泡实验室做实验&#xff0c;晚上挤时间写论文&#xff0c;熬了一两个月出初稿&#xff0c;结果格式不对、文献零散&#xff0c;还要和同门改来改去&#xf…...