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

【redis】set 类型:基本命令

文章目录

  • 基本概念
  • 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 中的所有元素,元素之间的顺序是无序的!!!

语法:

SADD key member [member ...]

SMEMBERS key

image.png|444

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

SCARD

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


语法:

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

SPOP

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


语法:

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

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

SRANDMEMBER

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


语法:

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

SMOVE

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


语法:

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

SREM

将制定的元素从 set 中删除


语法:

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

集合间操作

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

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

SINTER

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


语法:

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

SINTERSTORE

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


语法:

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

SUNION

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


语法:

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

SUNIONSTORE

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


语法:

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

SDIFF

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


语法:

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

SDIFFSTORE

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


语法:

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

命令小结

image.png

内部编码

intset(整数集合)

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

  • hashtable(哈希表)

相关文章:

  • STM32与HAL库开发实战:深入探索ESP8266的多种工作模式
  • 《C++并发编程实战》精读总结:第四章 并发操作的同步
  • Webpack 和 Vite 的主要区别
  • JVM 的不同组成部分分别有什么作用?
  • Navicat SqlServer 设置自增主键
  • 堆的应用(堆排序TopK问题)
  • mysql存储引擎、索引、事务---java
  • 【工具】C#游戏防沉迷小工具
  • docker桌面版启动redis,解决无法连接
  • 大数据技术之Spark优化
  • SaaS 系统业务逻辑处理方式探讨
  • 【PyCharm2024】一些好用的小功能
  • 大模型学习笔记------Llama 3模型架构之旋转编码(RoPE)
  • Redis 源码分析-内部数据结构 quicklist
  • peach模糊测试工具中,stateModel模块中的type的作用
  • DeepLabv3+改进10:在主干网络中添加LSKBlock|动态调整其大型空间感受野,助力小目标识别
  • Ai文章改写出来的文章,怎么过Ai检测?控制指令,测试的一点心得,彻底疯了!
  • 14.使用各种读写包操作 Excel 文件:辅助模块
  • 蓝桥杯Python赛道备赛——Day3:排序算法(二)(归并排序、堆排序、桶排序)
  • 【解锁机器学习:探寻数学基石】
  • “抵沪第一杯咖啡”送进虹桥机场到达层,刚下飞机就能免费喝
  • 为配合铁路建设,上海地铁3号线将在这两个周末局部缩时运营
  • 商务部:“一国一策”落实对非合作“十大伙伴行动”
  • 建行原副行长章更生涉嫌受贿罪、违法发放贷款罪被逮捕
  • 华生是养了狗,还是藏了枪——《福尔摩斯探案全集》翻译一例
  • 抖音开展“AI起号”专项治理,整治利用AI生成低俗猎奇视频等