【redis】set 类型:基本命令

devtools/2025/3/17 13:44:18/

文章目录

  • 基本概念
  • SADD 和 SMEMBERS
  • SCARD
  • SPOP
  • SRANDMEMBER
  • SMOVE
  • SREM
  • 集合间操作
    • SINTER
    • SINTERSTORE
    • SUNION
    • SUNIONSTORE
    • SDIFF
    • SDIFFSTORE
  • 命令小结
  • 内部编码

基本概念

谈到一个属于,这个术语可能有多种含义,set

  1. 集合
  2. 设置(和 get 相对应)

集合就是把一些有关联的数据放到一起

  1. 集合中的元素是无序的(和前面 list 的有序是对应的)

    • 有序:顺序很重要,变化一下顺序,就是不同的 list
    • 无序:顺序不重要,变化一下顺序,集合还是那个集合
  2. 集合中的元素是不能重复的(唯一的)

list 类似,集合中的每个元素,也都是 string 类型(可以使用 JSON 这样的格式让 string 也能存储结构化数据)

SADD 和 SMEMBERS

  • 将一个或者多个元素添加到 set 中,重复的元素无法添加到 set
  • 获取一个 set 中的所有元素,元素之间的顺序是无序的!!!

语法:

redis">SADD key member [member ...]SMEMBERS key

image.png|444

  • SADD 返回值:所有元素的列表
  • MEMBERS 返回值:1 表示元素在 set 中。0 比哦啊是元素不在 set 中或者 key 不存在

SCARD

获取一个 set 的基数(cardinality),即 set 中的元素个数


语法:

redis">SCARD key
  • 返回值:set 中元素的个数image.png|352

SPOP

set 中删除并返回一个或者多个元素。注意,由于 set 内的元素是无序的,所以取出哪个元素实际是未定义行为,即可以看做随机的


语法:

redis">SPOP key [count]
  • 返回值:取出的元素image.png|281

Redis 源码中,针对 spop 实现的时候,就采取了“生成随机数”的方式

SRANDMEMBER

随机返回元素, 一个或多个


语法:

redis">SRANDMEMBER key
  • 返回随机到的元素image.png|221

SMOVE

将元素从源 set 取出并放入目标 set


语法:

redis">SMOVE source destination member
  • 1 表示移动成功,0 表示失败image.png

SREM

将制定的元素从 set 中删除


语法:

redis">SREM key member [member ...]
  • 返回值:本次操作删除的元素个数image.png

集合间操作

交集(inter)、并集(union)、差集(diff

  • 交集:最终结果同时出现在两个集合中
  • 并集:把多个集合中的数据都集中放在一起,如果有元素重复,也最终只保留一份
  • AB 做差集,就是找出哪些元素,在 A 中存在,同时再 B 中不存在image.png|381

SINTER

获取给定 set 的交集中的元素


语法:

redis">SINTER key [key ...]
  • 返回值:交集的元素image.png|331

SINTERSTORE

获取给定 set 的交集中的元素并保存到目标 set


语法:

redis">SINTERSTORE destination key [key ...]
  • 返回值:交集的元素个数image.png

SUNION

获取给定 set 的并集中的元素


语法:

redis">SUNION key [key ...]
  • 返回值:并集的元素image.png|268

SUNIONSTORE

获取给定 set 的并集中的元素并保存到目标 set


语法:

redis">SUNIONSTORE destination key [key ...]
  • 返回值:并集的元素个数image.png

SDIFF

获取给定 set 的差集中的元素


语法:

redis">SDIFF key [key ...]
  • 返回值:差集的元素image.png

SDIFFSTORE

获取给定 set 的差集中的元素并保存到目标 set


语法:

redis">SDIFFSTORE destination key [key ...]
  • 返回值:差集的元素个数image.png

命令小结

image.png

内部编码

intset(整数集合)

  • 为了节省空间,做出的特定优化。当元素均为整数,并且元素个数不是很多的时候

  • hashtable(哈希表)


http://www.ppmy.cn/devtools/167834.html

相关文章

xlua 运行原理

iOS限制App的二进制代码要一次性的包含在App内,也就是AOT,不支持JITLua代码作为资源文件,玩家下载,不涉及字节码,所以可以做热更Lua代码通过Lua虚拟机解释执行(解释成机器码),并在虚…

学习TensorFlow前的NumPy核心知识点

学习TensorFlow前的NumPy核心知识点 一、数组创建与属性 数组创建 核心方法:使用np.array()、np.zeros()、np.ones()、np.arange()、np.linspace()创建数组。 import numpy as np# 创建一维数组 arr1 np.array([1, 2, 3])# 创建全零二维数组 zeros_arr np.zer…

PyTorch分布式训练

本文结构: 分布式训练概述环境设置数据并行(DDP)模型并行启动训练性能优化建议示例代码参考资料和相关问题 以下是为您整理的PyTorch分布式训练教程指南: 一、PyTorch分布式训练核心概念 数据并行:通过分割数据集实…

基于javaweb的SpringBoot博客商城管理系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

如何把绿色可执行应用程序添加到Ubuntu的收藏夹Dock中

解决办法: 对于安装的程序来说,当你运行程序以后,在收藏夹上右键该图标就可以勾选“添加到收藏夹”中,这样程序就固定到收藏夹上了;但是对于绿色可执行应用程序来说,无法这样操作。可参考如下操作步骤&…

使用 AJAX 前后端传递数据

使用异步操作(ajax)前后端传递数据 1、传递对象 1.1、jsp文件 <% page language"java"pageEncoding"UTF-8" isELIgnored"false"%><html> <meta charset"UTF-8"> <%--${pageContext.request.contextPath}&#…

打靶练习-W1R3S、JARBAS、SickOS、Prime

W1R3S(思路为主) 信息收集 首先使用nmap探测主机&#xff0c;得到192.168.190.147 接下来扫描端口&#xff0c;可以看到ports文件保存了三种格式 其中.nmap和屏幕输出的一样&#xff1b;xml这种的适合机器 nmap -sT --min-rate 10000 -p- 192.168.190.147 -oA nmapscan/ports…

计算机毕业设计:饮品在线点单与管理系统

​​​饮品在线点单与管理系统mysql数据库创建语句 饮品在线点单与管理系统oracle数据库创建语句饮品在线点单与管理系统sqlserver数据库创建语句饮品在线点单与管理系统springspringMVChibernate框架对象(javaBean,pojo)设计饮品在线点单与管理系统springspringMVCmybatis框架…