Redis数据类型-Set

news2024/9/9 1:29:06

 

一. 概述
首先我们来看看Redis中的Set类型有什么特点。
与List相比,Set集合中的元素不允许重复,一个集合中最多可以对应2^32-1(4294967295)个元素。

Set除了可以执行增删改查的命令之外,还支持交集、并集、差集等的计算。
二. 基本命令
对我们来说,常用的Set命令有如下几种。

文章底部扫码,免费领取Redis资料大礼包! 

  1. 插入操作

#插入: sadd key value1 value2 .....
192.168.65.15:6379> sadd student aa bb cc
#返回新增成功value的个数
(integer) 3

#第二次插入,由于存在重复元素,所以不成功
192.168.65.15:6379> sadd student aa bb cc
(integer) 0
2. 查询操作
#查询所有: smembers key
192.168.65.15:6379> smembers student

  1. "aa"
  2. "cc"
  3. "bb"

#查询元素是否存在: sismember key value
192.168.65.15:6379> sismember student aa
#如果存在返回1
(integer) 1
#如果不存在返回0
192.168.65.15:6379> sismember student dd
(integer) 0

#随机返回count个元素: srandmember key count
192.168.65.15:6379> srandmember student 2

  1. "aa"
  2. "cc"

#返回集合元素的个数:scard key
192.168.65.15:6379> scard student
(integer) 3
3. 删除操作
#删除元素,返回删除的个数:srem key value...
192.168.65.15:6379> srem student aa
(integer) 1
#查看一下,果然已删除
192.168.65.15:6379> smembers student

  1. "cc"
  2. "bb"

#随机删除元素并返回删除的元素
192.168.65.15:6379> spop student 1

  1. "cc"

#查看一下,果然已删除
192.168.65.15:6379> smembers student

  1. "bb"
    三. 交集、并集、差集
    除了以上几种基本的操作之外,我们还可以计算集合的交集、并集、差集。
  1. 计算交集

文章底部扫码,免费领取Redis资料大礼包!

#新增学生数据:张三 20岁 男
192.168.65.15:6379> sadd student1 zs 20 boy
(integer) 3

#新增学生数据:李四 22岁 男
192.168.65.15:6379> sadd student2 ls 22 boy
(integer) 3

#求这两条数据的交集:boy
192.168.65.15:6379> sinter student1 student2

  1. "boy"
  1. 计算并集

#集合合并,并且重复部分只保留一份
192.168.65.15:6379> sunion student1 student2

  1. "20"
  2. "boy"
  3. "22"
  4. "zs"
  5. "ls"
  1. 计算差集

文章底部扫码,免费领取Redis资料大礼包!

#sdiff key1 key2 结果是 key1中去重重复部分
192.168.65.15:6379> sdiff student1 student2

  1. "20"
  2. "zs"
  1. 保存结果
    最后我们把上述操作的命令完整地展示在下面。

#计算交集,并保存
#sinterstore 保存的key key1 key2
192.168.65.15:6379> sinterstore student_jj student1 student2
(integer) 1
192.168.65.15:6379> smembers student_jj

  1. "boy"

#计算并集,并保存
#sunionstore 保存的key key1 key2
192.168.65.15:6379> sunionstore student_bj student1 student2
(integer) 5
192.168.65.15:6379> smembers student_bj

  1. "20"
  2. "boy"
  3. "22"
  4. "zs"
  5. "ls"

#计算差集,并保存
#sdiffstore 保存的key key1 key2
192.168.65.15:6379> sdiffstore student_cj student1 student2
(integer) 2
192.168.65.15:6379> smembers student_cj

  1. "20"
  2. "zs"
    192.168.65.15:6379>
    四. 应用场景
    学习完了Set命令,我们又该把Set应用在哪些地方呢?以下是我们总结出来的一些常见应用场景。

文章底部扫码,免费领取Redis资料大礼包!

#用户1的开发语言标签:
192.168.65.15:6379> sadd user1 java go python
(integer) 3

#用户2的开发语言标签:
192.168.65.15:6379> sadd user2 java net c#
(integer) 3

#用户1和用户2的开发语言共同标签:
192.168.65.15:6379> sinter user1 user2

  1. "java"

#设置一个奖品池:一等奖num1 至 四等奖num4
192.168.65.15:6379> sadd prize num1 num2 num3 num4
(integer) 4
#随机抽取奖品
192.168.65.15:6379> spop prize 1

  1. "num2"
  2. 如果上面的文章看着比较枯燥,点击下面的链接直接观看:

    千锋教育Redis 6 入门到实战教程,redis底层原理+redis分布式锁

    也可以扫码直接观看视频哦!绝对的干货满满,更多精彩视频B站搜索“千锋教育” 

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

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

相关文章

当Python遇上异步编程:实现高效、快速的程序运行!

前言 同步/异步的概念: 同步是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行 异步是和同步相对的,异步是指在处理调用这…

单片机的几种ota内存分区表介绍

前言 在做项目时,现在越来越多被要求单片机要支持升级功能。需求变化快,固件要不断支持新的功能,手动人工去烧固件越来越显得麻烦,已经操作成本高。 典型的方式是通过单片机外接的蓝牙、wifi等无线模块,或者通过单片…

如何创建UE5插件?

UE5 插件开发指南 前言1.0.打开插件窗口1.1.打开新建插件窗口1.2.填写新插件信息1.3.查看引擎自动生成的插件内容前言 首先,笔者默认读者已经知道如何安装UE5虚幻引擎了,并且也会编辑器的一些基本操作,那么这里省略了:如何注册Epic Games账号?如何安装UE5引擎?如何安装C++相…

基于SpringBoot的完成SSM整合项目开发

整合第三方技术 1. 整合JUnit问题导入1.1 Spring整合JUnit(复习)1.2 SpringBoot整合JUnit 2. 基于SpringBoot实现SSM整合问题导入2.1 Spring整合MyBatis(复习)2.2 SpringBoot整合MyBatis2.3 案例-SpringBoot实现ssm整合 1. 整合JU…

Maven多环境配置与使用、跳过测试的三种方法

文章目录 1 多环境开发步骤1:父工程配置多个环境,并指定默认激活环境步骤2:执行安装查看env_dep环境是否生效步骤3:切换默认环境为生产环境步骤4:执行安装并查看env_pro环境是否生效步骤5:命令行实现环境切换步骤6:执行安装并查看env_test环境是否生效 2 跳过测试方式1:IDEA工具…

机器学习之滤波入门

滤波的基本概念: 滤波是一种信号处理技术。在机器学习中,滤波通常指的是对输入信号进行加工,以消除噪声、平滑信号或突出特定频率范围的信号 简言之:加工输入,达到理想信号。 用生活的例子来解释: 假设你正在听一首音乐,但是在你的…

UML中的assembly关系

UML中的assembly关系 1.什么是Assembly关系 在UML(统一建模语言)中,"assembly"(组装)是一种表示组件之间关系的关联关系。组件是系统中可替换和独立的模块,可以通过组装来构建更大的系统。 当一…

零基础入门网络安全必看书单(附电子书籍+配套资料)

学习的方法有很多种,看书就是一种不错的方法,但为什么总有人说:“看书是学不会技术的”。 其实就是书籍没选对,看的书不好,你学不下去是很正常的。 一本好书其实不亚于一套好的视频教程,尤其是经典的好书…

中间件(一)

中间件 1. 概念1.1 为什么要使用中间件?1.2 中间件定义及分类 2. 主要分类2.1 事务式中间件2.2 过程式中间件2.3 面向消息的中间件2.4 面向对象中间件2.5 Web应用服务器2.6 数据库中间件2.7 其他 3. 常用的中间件 1. 概念 中间件(Middleware&#xff09…

BigDecimal 类型的使用

目录 一、前言 二、BigDecimal构造方法 二、BigDecimal参与运算 2.1定义初始值 2.2计算 2.3比较大小 2.4BigDecimal取其中最大、最小值、绝对值、相反数: 2.5补充 2.6、java中 BigDecimal类型的可以转换到double类型: 三、BigDecimal格式化、小…

小白白也能学会的 PyQt 教程 —— 图像类及图像相关基础类介绍

文章目录 〇、前言一、PyQt 中的图像类1、图像类简介2、图像类转换① 常用类转换(QPixmap、QImage、QIcon)② QBitmap、QBrush、QPen 转换为 QPixmap 或 QImage③ QByteArray 与 QPixmap、QImage 的互转④ numpy 与 QImage 互转 二、图像显示组件1、使用…

DNDC模型在土地利用变化、未来气候变化下的建模方法及温室气体时空动态模拟实践技术

DNDC模型讲解 1.1 碳循环模型简介 1.2 DNDC模型原理 1.3 DNDC下载与安装 1.4 DNDC注意事项 ​ DNDC初步操作 2.1 DNDC界面介绍 2.2 DNDC数据及格式 2.3 DNDC点尺度模拟 2.4 DNDC区域尺度模拟 2.5 DNDC结果分析 ​ DNDC气象数据制备 3.1 数据制备中的遥感和GIS技术 3…

微博官方API使用方法【从注册到实战】

第一步:微博开发者身份认证 访问微博开放平台,登录自己微博账号,登录之后首先需要完善开发者的基本信息。【使用个人】 填写完成之后【审核通过】如下: 第二步:创建自己的应用 【备注:如果只是为了测试…

Linux安装Redis6.0版本教程

前言:采用Redis源码压缩包解压编译的安装方式。因为centos7.x的gcc版本还是4.8.5,而GCC编译指定的版本是需要5.3以上。 1、下载Redis的tar.gz的安装包 百度云下载:Linux下载Redis6.0.8 提取码:dbbv 2、安装gcc新版本 #环境部署…

【IEEE CIM 2023】基于多目标进化算法的抗菌肽设计方法

Evolutionary Multi Objective Optimization in Searching for Various Antimicrobial Peptides 小生境共享(Niche Sharing)是生物进化算法中的一个重要概念。在传统的进化算法中,通常会假设每个个体都是独立且不同的,因此可能会导…

机器学习基础之单层感知机及线性可分

文章目录 线性可分和权重向量公式线性不可分 线性可分和权重向量 单层感知机是后续深度学习的基础模型,本身没什么用,因为只能解决线性可分问题。 如这张图,想识别照片是横向的还是竖向的,只需要在中间画一条线,白点…

【大数据学习篇9】各区域热门商品Top3分析

学习目标/Target 掌握各区域热门商品Top3分析实现思路 掌握如何创建Spark连接并读取数据集 掌握利用Spark获取业务数据 掌握利用Spark过滤商品的行为类型 掌握利用Spark转换数据格式 掌握利用Spark统计每个区域中的不同商品 掌握利用Spark根据区域进行分组 掌握利用Spark根据区…

Linux的tail,grep,sed命令总结,以使用上述三种命令获取日志信息为例

目录 tail命令语法说明基本参数命令举例 grep命令语法说明匹配模式选择杂项输入控制文件控制 sed命令语法格式举例 使用命令组合查询日志信息 业务需求需要对软件日志进行查询和呈现,查询的条件是时间区间和关键词,系统运行在linux环境下,为此…

阿里巴巴“高并发”核心笔记!《基础+实战+源码+面试+架构》

前言 作为一个普普通通的程序员,如何才能提升自己的能力,在职场上拥有一技之长,这也成为普通的你我,迫切的需求。 拥有什么样的能力才能不被淘汰?答案是:高并发,它几乎成为了每个程序员都想要…

ATTCK v13版本战术介绍——防御规避(六)

一、引言 在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术理论知识及实战研究、部分防御规避战术,本期我们为大家介绍ATT&CK 14项战术中防御规避战术第31-36种子技术,后续会介绍防御规避其他子技术&#xf…