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

详解redis(9):数据结构set

一、Redis Set 是什么

Set = 不重复 + 无顺序的集合

一个自动去重不关心顺序的容器

二、Set 和 List 的本质区别

对比项ListSet
是否允许重复✅ 允许❌ 不允许
是否有顺序✅ 有顺序(下标)❌ 无序
能否按下标访问✅ LINDEX❌ 不支持
是否支持集合运算✅ 交集 / 并集 / 差集
典型使用场景消息队列、时间线去重、关系、标签

三、Set 能干什么

交集(共同好友)

SINTER user:1:friends user:2:friends

并集(所有好友)

SUNION user:1:friends user:2:friends

差集(你有我没有)

SDIFF user:1:friends user:2:friends

四、底层结构一:整数集合

使用条件(必须同时满足)

所有元素都是整数
元素个数 < 512(默认,可配置)

本质:连续内存数组

特点:

有序存储(但对外仍然无序)

紧凑、节省内存

使用二分查找

只支持整数

五、底层结构二:哈希表

什么时候用?

元素不是纯整数
或元素数量很多

优点

O(1) 级别的增删查

支持任意字符串

支持大规模数据

缺点

内存占用比 intset 高

有 rehash 成本

六、两种实现对比总结

维度intsethash table
元素类型仅整数任意
数据规模小(<512)
内存占用极低较高
查询方式二分查找哈希
是否自动升级→ hash不可降级

七、为什么抽奖活动非常适合用 Set?

抽奖的核心需求其实就 4 个字:

去重 + 随机

抽奖需求Set 特性
同一用户不能重复参与Set 天然去重
参与顺序无所谓Set 无序
随机抽人SRANDMEMBER / SPOP
统计参与人数SCARD
http://www.jsqmd.com/news/290235/

相关文章:

  • 一文学习 了解 OSI模型、TCP/IP模型、网络封包
  • 深入解析:Linux动态存储管理的逻辑卷使用示例
  • 北京附近上门回收酒
  • YOLOv8目标检测:从理论到实战的飞跃之旅
  • 用AI制作表格实战:20个高频ChatExcel指令词,告别低效Excel操作
  • 打破 NotebookLM 最后的限制:我写了个开源工具,把 PDF 瞬间变回可编辑 PPT!
  • 力扣122 买卖股票的最佳时机II java实现
  • STM32项目分享:图书馆环境监测系统
  • 2026年矩阵系统避坑指南:市面主流软件真实横评,到底哪家好?
  • 2026年私域的八大挑战及发展方向
  • 7×24小时技术支持的售后服务系统有哪些?
  • 2026年矩阵系统选型图谱:5款主流软件的“性格画像”与适用场景匹配
  • 能对接电商系统的售后服务系统有哪些?
  • APS概念-需求时间供应时间
  • APS概念-新订单开始日期延迟
  • APS概念-可承诺量 / 承诺能力拉动容差
  • APS概念-ATP和CTP
  • APS概念-供应耗用容差
  • 互联网医院系统|互联网医院成品|互联网医院开发
  • 干货分享|FPGA、CPU与GPU协同计算架构
  • 太空算力、AI上星与卫星智能化
  • 2025年毕业论文救星!8款AI写论文工具实测,一键改重降重+高级表达替换,原创度飙升!
  • 基于深度学习的交通锥形桶检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
  • 问题记录与反思
  • Qt 属性绑定(Property Binding)机制提供的完整、详细教程与丰富示例,重点覆盖 Qt 6.x 的现代用法
  • 行政管理大专生经济压力大?考这高性价比证书,副业收入超主业
  • 故障复盘:从“组播协议疑云”到“物理协商真相”——记一次视频流中断的排查之旅
  • 深入 Flutter for OpenHarmony 组件属性配置:从代码细节看 UI 表现力构建
  • Postman持久化保存/设置断言详解
  • Postman介绍和安装,发送带参数的GET请求