Redis:set类型
Redis:set类型
- set命令
- SADD
- SMEMBERS
- SISMEMBER
- SCARD
- SPOP
- SRANDMEMBER
- SMOVE
- SREM
- 集合间操作
- SINTER
- SINTERSTORE
- SUNION
- SUNIONSTORE
- SDIFF
- SDIFFSTORE
- 内部编码
- intset
- hashtable
当把一些关联的数据放到一起,就构成一个集合。在Redis
中,使用set
类型维护集合。set
维护一个不允许重复元素的无序集合,每个集合元素类型都是String
。
set命令
SADD
- 将一个或多个元素添加到
set
中,如果不存在则创建一个集合
sadd key member [member ...]
返回本次操作添加成功的元素个数。
示例:
第一次sadd
,set1
不存在,此时创建集合并且插入1 2 3
,返回3
表示成功插入三个数字。第二次sadd
,由于数字2 3
已经存在,所以只插入了4 5
,返回2
表示成功插入两个元素。
SMEMBERS
- 获取
set
中的所有元素
smembers key
示例:
查询刚才创建的set1
。
SISMEMBER
- 判定元素是否在集合中
sismember key member
如果存在返回1
,不存在返回0
。
示例:
SCARD
- 获取集合的元素个数
scard key
返回集合的元素个数。
SPOP
- 随机获取并删除一个或多个元素
spop key [count]
返回获取到的元素。
示例:
第一次spop
获取元素4
,既不是头也不是尾,第二次spop
又得到两个随机值5 1
,确实值是随机的。
官方文档中声明,spop
得到的值是随机的,就算是两个相同的集合,同样的操作得到的值也不一样。因为Redis
源码中给spop
增加了一个生成随机成员的过程,是真正做了随机功能。
SRANDMEMBER
- 获取
set
中的随即元素
srandmember key [count]
返回随机获取到的元素,count
表示要获取的元素个数。
示例:
SMOVE
- 将一个元素从源
set
移动到目的set
中
smove source destination member
其中source
是源集合,destination
是目的集合,member
是被移动的元素。返回0
表示移动失败,返回1
表示成功。
示例:
此处将set2
中的666
元素移动到了set1
中。
在移动过程中,可能出现以下两种情况:
member
已经在destination
中存在,此时会将member
从source
中删除,并且spop
返回1
视为移动成功member
在source
中不存在,此时spop
返回0
,表示移动失败
SREM
- 删除
set
中的指定元素
srem key member [member ...]
返回删除成功的元素个数。
集合间操作
除了基本的集合命令,Redis
还提供了集合之间的一些命令。
SINTER
- 对多个集合求交集
sinter key [key ...]
返回集合之间的交集。
示例:
SINTERSTORE
- 求出多个集合的交集,并输出到
destination
中
sinterstore destination key [key ...]
返回交集的元素个数。
示例:
此处将set1
和set2
的交集输出到set4
中,sinterstore
返回3
表示交集有三个元素。
SUNION
- 得到多个
set
的并集
sunion key [key ...]
返回多个集合的并集。
SUNIONSTORE
- 求出多个集合的并集,并输出到
destination
中
sunionstore destination key [key ...]
返回并集中元素的个数。
SDIFF
- 求出多个集合的差集
sdiff key [key ...]
返回差集的结果。
示例:
此处要注意,做差是有先后顺序的,set1 - set2
和set2 - set1
的结果是不一样的。
SDIFFSTORE
- 求出多个集合的差集,并输出到
destination
中
sdiffstore key [key ...]
返回差集中元素的个数。
- 总结
命令 | 功能 |
---|---|
sadd | 添加元素 |
srem | 删除元素 |
scard | 获取集合元素个数 |
sismember | 检测元素是否在集合中 |
srandmember | 获取随机集合元素 |
spop | 随机删除集合元素 |
smembers | 获取集合所有元素 |
sinter | 集合求并集 |
sinterstore | 集合求并集,输出到指定集合 |
sunion | 集合求交集 |
sunionstore | 集合求交集,输出到指定集合 |
sdiff | 集合求差集 |
sdiffstore | 集合求差集,输出到指定集合 |
内部编码
intset
整数集合,对正数进行了特定优化。当set
中的元素都是整数,并且元素个数小于set-max-intset-entries
(默认512个)时,Redis
使用intset
实现set
。
hashtable
当集合类型不满足以上条件,也就是成员数量太多,或者有成员不是int
,那么采用hashtable
哈希表来实现set
。
相关文章:

Redis:set类型
Redis:set类型 set命令SADDSMEMBERSSISMEMBERSCARDSPOPSRANDMEMBERSMOVESREM 集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 内部编码intsethashtable 当把一些关联的数据放到一起,就构成一个集合。在Redis中,使用set类型维护…...

九大排序之插入排序
1.前言 插入排序是把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。实际中我们玩扑克牌时,就用了插入排序的思想。 本章重点:主要着重的介绍两种插入排序…...

DNABERT: 一个基于 Transformer 双向编码器表征的预训练 DNA 语言模型
本文结合 DNABERT 的原文,主要介绍了: Overview of DNABERT 开发 DNABERT 的背景 DNABERT 的 tokenization DNABERT 的模型架构 DNABERT 的预训练 基于微调 DNABERT 的应用 1. Overview of DNABERT 我们之前介绍了 BERT,它是一个基于 Transfo…...

基于Hive和Hadoop的电商消费分析系统
本项目是一个基于大数据技术的电商消费分析系统,旨在为用户提供全面的电商消费信息和深入的消费行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 S…...

记一次炉石传说记牌器 Crash 排查经历
大家好这里是 Geek技术前线。最近在打炉石过程中遇到了HSTracker记牌器的一个闪退问题,尝试性排查了下原因。这里简单记录一下 最近炉石国服回归;由于设备限制,我基本只会在 Mac 上打炉石。并且由于主要打竞技场,所以记牌器是必不…...
精益驱动的敏捷开发
1. 什么是精益?精益能给软件开发带来什么? 精益是一种起源于制造业的管理哲学,尤其是从丰田的生产体系中发展而来。它的核心目标是通过最小化浪费、提高效率和优化流程来实现高效的生产。精益的核心原则包括: 消除浪费ÿ…...
SolidWorks机器转ROS2 URDF
文章目录 开发环境SolidWords插件使用生成urdf文件之后的处理CMakeLists文件修改package.xml变更Launch更改运行 开发环境 Linux系统:Ubuntu 22.04 Ros2版本:humble Solidwords版本:2023 (2019以上版本应该都是可以的)…...

(Linux驱动学习 - 6).Linux中断
一. Linux 中断 API 函数 1.中断号 每个中断都有一个中断号,通过中断号即可区分不同的中断,有的资料也把中断号叫做中 断线。在 Linux 内核中使用一个 int 变量表示中断号。 2.申请中断 - request_irq 函数原型: int request_irq(unsigne…...

SpringBoot驱动的明星周边产品电商解决方案
1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…...
C++、Ruby和JavaScript
C C最初被称为带类的C, 兼容C的语法,此既是C得以流行的前提,也是C某些语法被捆绑的根源。C的来源于C语言的递增运算符,代表增加,意义为扩展。 C的历史 C类的设计思想来源于Simula. Simula为模拟的意思,被称为最早的面向…...
32单片机 低功耗模式
以下是一个基于STM32的低功耗模式示例代码,展示如何将STM32微控制器置于低功耗模式,并在特定条件下唤醒它。这个示例使用的是STM32 HAL库。 ### 示例代码:进入睡眠模式并使用外部中断唤醒 c #include "stm32f4xx_hal.h" // 函数声明…...
501、二叉搜索树中的众数
1、题目描述 . - 力扣(LeetCode) 要求:给一个包含重复值的BST,找出并返回BST中的众数(出现频次最高的元素)。 注:如果树中有不止一个众数可以按任意顺序返回,即如果有多个众数多个都要返回。 ps࿱…...
【洛谷】P2330 [SCOI2005] 繁忙的都市 的题解
【洛谷】P2330 [SCOI2005] 繁忙的都市 的题解 题目传送门 题解 水最小生成树,发现可以水一堆黄题qaq 这题显然就是求最大边权最小的生成树,而用 Kruskal 很容易证明这就是最小生成树,考虑一下这个算法每次取的都是不构成环的最小边即可&a…...
第18场小白入门赛(蓝桥杯)
第 18 场 小白入门赛 6 武功秘籍 考察进制理解。 对于第 i i i 位,设 b i t i x bit_ix bitix ,每一位的最大值是 b j b_j bj ,也就是说每一位是 b j 1 b_j1 bj1 进制 ,那么第 i i i 位的大小就是 x ∑ j i 1…...

Redission · 可重入锁(Reentrant Lock)
前言 Redisson是一个强大的分布式Java对象和服务库,专为简化在分布式环境中的Java开发而设计。通过Redisson,开发人员可以轻松地在分布式系统中共享数据、实现分布式锁、创建分布式对象,并处理各种分布式场景的挑战。 Redisson的设计灵感来…...

初阶C语言-指针
1.指针是什么? 理解指针的两个要点: 1.指针是内存中一个最小单元的编号,也就是地址 2.口头语中说的指针,通常是指指针变量,是用来存放内存地址的变量 总结:指针就是地址,口语中说的指针通常是指…...

论文笔记:微表情欺骗检测
整理了AAAI2018 Deception Detection in Videos 论文的阅读笔记 背景模型实验可视化 背景 欺骗在我们的日常生活中很常见。一些谎言是无害的,而另一些谎言可能会产生严重的后果。例如,在法庭上撒谎可能会影响司法公正,让有罪的被告逍遥法外。…...

智能家居有哪些产品?生活中常见的人工智能有哪些?
智能家居有哪些产品? 1、智能照明设备类:智能开关、智能插座、灯控模块、智能空开、智能灯、无线开关。 2、家庭安防类:智能门锁、智能摄像机、智能猫眼、智能门铃。 3、智能传感器类:烟雾传感器、可燃气体传感器、水浸传感器、声光报警器…...

洗车行软件系统有哪些 佳易王洗车店会员管理系统操作教程#洗车店会员软件试用版下载
一、前言 【试用版软件下载可点击本文章最下方官网卡片】 洗车行软件系统有哪些 佳易王洗车店会员管理系统操作教程#洗车店会员软件试用版下载 洗车管理软件应用是洗车业务的得力助手,实现会员管理及数据统计一体化,助力店铺高效、有序运营。 洗车项…...

【Java】springboot 项目中出现中文乱码
在刚创建的springboot项目中,出现乱码,跟走着解决一下 1、Ctrl Shift S 打开idea设置,根据图片来,将③④这三个地方都修改为UTF-8 2、返回配置查看,解决...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...