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++ 圆柱体的渲染(源代码)
作业内容 请勿抄袭 代码功能:渲染一个绕中心轴自转的圆柱体。要求该圆柱体高度为3.0,半径为0.5。 #include <windows.h> #include <d3d11.h> #include <d3dx11.h> #include <d3dcompiler.h> #include <xnamath.h> #incl…...
搭建前端框架
在终端进入web目录,然后创建vuecrud工程 创建工程并引入ElementUI和axios手把手教学>传送门:VueCLI脚手架搭建...
2310C++构造对象
原文 本文展示一个构造对象方式,用户无需显式调用构造器.对有参构造器类,该实现在构造改对象时传递默认值来构造. 当然用户也可指定(绑定)某个参数的值.实现思路参考boost-ext/di的实现.看下示例: 构 成员{整 x10; }; 构 成员1{整 x11; }; 类 例子1{ 公:例子1(成员 x,成员1 x…...
nginx多文件组织
背景: nginx的话,有时候,想部署多个配置,比如:使用不同的端口配置不同的web工程。 比如:8081部署:项目1的web页面。 8082部署:项目2的web页面。 1)nginx.conf worker_processes…...
扩容LVM卷导致lvm元数据丢失的恢复过程
一、问题描述 因某次MySQL binlog占用过高扩容时,是直接对云盘操作,而扩容直接操作了lvm卷而未操作云盘分区,并随后执行了扩容的partprobe,resize2fs卷等操作;最后,显示并未扩容成功,重启系统后…...
【MySQL教程】| (1-1) 2023MySQL-8.1.0 安装教程
文章目录 一、安装包下载二、安装配置1、解压安装包2、编写MySQL配置文件3、初始化MySQL数据库3、安装mysql服务并启动4、MySQL服务5、连接MySQL6、修改密码 三、配置环境变量四、防止mysql自启动拖慢开机时间 近日有粉丝问到mysql在win11的安装中遇到一些问题,应粉…...
数据大屏定时请求后端数据
需求: 因为大屏基本从上午展示到晚上,不会频繁去打开页面。 前端实现: 在Vue的created钩子函数中发送初次请求,并使用JavaScript中的setInterval函数来设置整点定时发送请求。以下是一个示例 <template><div><h1…...
数据结构--队列
一、队列是什么 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,队列是一种操作受限制的线性表。进行插入操作的端称为队尾&…...
Python绘图系统25:新增8种绘图函数
文章目录 常用绘图函数单选框的更改逻辑源代码 Python绘图系统: 前置源码: Python打造动态绘图系统📈一 三维绘图系统 📈二 多图绘制系统📈三 坐 标 轴 定 制📈四 定制绘图风格 📈五 数据生成导…...
(二) gitblit用户使用教程
(一)gitblit安装教程 (二) gitblit用户使用教程 (三) gitblit管理员手册 目录 网页访问git客户端设置推送错误配置查看当前配置 日常使用仓库分组my profile修改上传代码简洁 网页访问 点击Advanced... 点击Accept the Risk and Contiue 初始用户名和密码都是admin,点击login…...
8.3Jmeter使用json提取器提取数组值并循环(循环控制器)遍历使用
Jmeter使用json提取器提取数组值并循环遍历使用 响应返回值例如: {"code":0,"data":{"totalCount":11,"pageSize":100,"totalPage":1,"currPage":1,"list":[{"structuredId":&q…...
ARMv8 A64指令集内存访问优化与LDRH/LDRSB指令详解
1. A64指令集与内存访问基础在ARMv8架构中,A64指令集作为64位执行状态的核心指令系统,其内存访问指令的设计直接影响处理器性能。与32位的A32指令集相比,A64在寄存器数量、地址空间和指令编码等方面都有显著改进。1.1 ARMv8内存访问特点ARM架…...
从协议到代码:用Python仿真5G NR下行同步全流程(含PBCH解码与MIB解析)
从协议到代码:用Python仿真5G NR下行同步全流程(含PBCH解码与MIB解析) 在通信系统设计中,下行同步是终端接入网络的第一步关键操作。5G新空口(NR)技术引入了更复杂的同步信号结构,这对算法工程师和研究人员提出了更高要…...
VSCode + Cline + Codeium + OpenSpec + DeepSeek 完整配置指南
VSCode Cline Codeium OpenSpec DeepSeek 完整配置指南 📋 最终方案概述 组件用途费用VSCode代码编辑器免费Codeium (Windsurf)Tab 补全 生成注释免费ClineAI Agent(复杂任务、多文件操作)免费OpenSpec规范驱动开发(复杂功…...
市场营销Agent:自动生成内容与投放策略
市场营销Agent:自动生成内容与投放策略——从痛点分析到落地实践的全栈指南 引言 痛点引入 在数字营销的战场上,每天都有无数的团队在重复着「内容绞肉机」和「投放试错场」的噩梦: 内容产出端:为了覆盖小红书、抖音、知乎、微信公众号、TikTok、LinkedIn等数十个主流渠…...
Windows系统mqoa.dll文件丢失无法启动程序解决
在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…...
告别龟速下载!用这个离线驱动包5分钟搞定DBeaver连接所有数据库
5分钟极速配置:DBeaver全量离线驱动包实战指南 每次打开DBeaver准备连接新数据库时,那个转个不停的驱动下载进度条是不是让你抓狂?尤其是在企业内网环境或网络不稳定时,等待驱动下载的过程简直能让人把咖啡喝成凉茶。今天要分享的…...
从CMake报错到编译成功:一站式解决absl依赖配置难题
1. 当CMake突然报错:absl依赖缺失的紧急处理 第一次看到这个报错时,我正赶着在截止日期前完成gRPC服务的部署。控制台突然弹出的红色错误让我心头一紧:"Could not find a package configuration file provided by absl"。这种依赖缺…...
5步快速搭建微信机器人:WeixinBot完整使用指南
5步快速搭建微信机器人:WeixinBot完整使用指南 【免费下载链接】WeixinBot 网页版微信API,包含终端版微信及微信机器人 项目地址: https://gitcode.com/gh_mirrors/we/WeixinBot 在当今自动化办公和智能交互的时代,拥有一个能够自动处…...
如何通过HS2-HF Patch解锁《Honey Select 2》的完整创作潜力:从新手到专家的终极指南
如何通过HS2-HF Patch解锁《Honey Select 2》的完整创作潜力:从新手到专家的终极指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为《Honey…...
一天怎么完成论文初稿
写论文这件事,从选题到完稿,哪一步都能卡掉你半条命。我身边不少读研读博的同学,白天泡实验室做实验,晚上挤时间写论文,熬了一两个月出初稿,结果格式不对、文献零散,还要和同门改来改去…...
