news 2026/7/26 18:47:36

Redis Set 实战:基于「并、差、交集」的分布式场景应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Redis Set 实战:基于「并、差、交集」的分布式场景应用

文章目录

    • 一、Redis Set 核心特性
    • 二、Set 核心命令(交、并、差集)
    • 三、典型应用场景与实战模拟
      • 场景1:交集模拟: 共同好友/共同关注
        • 业务思路
        • 模拟(命令行)
      • 场景2:并集模拟:活动参与用户去重统计
        • 业务思路
        • 模拟(命令行)
      • 场景3:差集:个性化推荐(好友/内容)
        • 业务思路
        • 实战模拟(命令行)
    • 四、核心优势与适用场景小结
      • 关键注意事项

一、Redis Set 核心特性

Redis Set 是无序、唯一的字符串集合,底层基于哈希表实现,支持高效的交、并、差集运算,天然适配“去重、关系计算”类分布式场景,是实现“共同好友、活动去重、推荐系统”的最优解。

二、Set 核心命令(交、并、差集)

操作类型命令格式作用
交集SINTER key1 key2 [key3...]返回多个 Set 的共同元素(都包含的元素)
并集SUNION key1 key2 [key3...]返回多个 Set 的全部元素(自动去重)
差集SDIFF key1 key2 [key3...]返回 key1 有、但其他 key 没有的元素(顺序敏感)
新增元素SADD key member1 [member2...]向 Set 中添加元素(Set 自动去重)
查看所有元素SMEMBERS key返回 Set 中的所有元素

三、典型应用场景与实战模拟

场景1:交集模拟: 共同好友/共同关注

核心命令 : SINTER

业务思路

将每个用户的“好友/关注列表”存储为独立的 Set,通过交集运算快速获取两个用户的共同好友/关注,无需遍历全量数据。

模拟(命令行)
# 1. 初始化数据:用户A和用户B的关注列表 SADD user:follow:A B C D E # 用户A关注:B、C、D、E SADD user:follow:B A C D F # 用户B关注:A、C、D、F # 2. 计算共同关注(交集) SINTER user:follow:A user:follow:B # 返回结果:C、D # 3. 查看验证 SMEMBERS user:follow:A # 确认用户A的关注列表 SMEMBERS user:follow:B # 确认用户B的关注列表

场景2:并集模拟:活动参与用户去重统计

核心命令:SUNION

业务思路

将每个活动的参与用户存储为独立的 Set,通过并集运算汇总所有参与过活动的用户(自动去重),避免重复统计。

模拟(命令行)
# 1. 初始化数据:活动1和活动2的参与用户 SADD activity:participant:1 A B C # 活动1参与用户:A、B、C SADD activity:participant:2 B C D # 活动2参与用户:B、C、D # 2. 统计所有参与过活动的用户(并集) SUNION activity:participant:1 activity:participant:2 # 返回结果:A、B、C、D

场景3:差集:个性化推荐(好友/内容)

核心命令:SDIFF

业务思路

以“用户已拥有的内容”为基准 Set,减去“候选池内容”的 Set,剩余元素即为“用户未接触过、可推荐的内容”,适配好友推荐、音乐/商品推荐等场景。

实战模拟(命令行)
# 1. 初始化数据:我的好友 + 好友A的好友 SADD my:friends A B C # 我的好友:A、B、C SADD friend:A:friends B C D E # 好友A的好友:B、C、D、E # 2. 计算“好友A有但我没有的好友”(差集) SDIFF friend:A:friends my:friends # 返回结果:D、E(可推荐给我的好友)

# 扩展场景:音乐推荐 SADD my:music 歌1 歌2 歌3 # 我听过的歌 SADD hot:music 歌2 歌3 歌4 歌5 # 热门歌单 SDIFF hot:music my:music # 返回结果:歌4、歌5(可推荐的新歌)

四、核心优势与适用场景小结

运算类型核心优势典型业务场景
交集快速计算“共同特征”,无需全量遍历共同好友、共同关注、共同喜好、权限交集校验
并集全局去重汇总,避免重复数据活动参与用户统计、全量标签汇总、多渠道数据去重
差集精准筛选“差异化内容”,适配推荐逻辑好友推荐、内容推荐、未读消息筛选、权限缺失校验

关键注意事项

  1. Redis Set 交并差集运算为内存操作,性能极高,适合百万级以下数据量;

  2. 差集运算顺序敏感SDIFF A BSDIFF B A,需根据业务逻辑确认 Set 顺序;

  3. 分布式场景下,可通过多实例分片存储超大 Set,结合SUNIONSTORE/SINTERSTORE将运算结果存入新 Set,便于后续复用。

    • 比如我们要计算两个集合交集后的容量
    # 先存结果到临时 key SUNIONSTORE temp activity:participant:1 activity:participant:2 SCARD temp DEL temp
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 5:37:09

DamoFD-0.5G模型在iOS平台上的集成方案

DamoFD-0.5G模型在iOS平台上的集成方案 1. 引言 想在iOS应用中实现精准的人脸检测功能吗?DamoFD-0.5G作为一款轻量级的人脸检测模型,在移动端部署方面表现出色。这个模型不仅能准确识别人脸位置,还能标出眼睛、鼻子、嘴巴等五个关键点&…

作者头像 李华
网站建设 2026/7/20 11:18:44

基于YOLO12的智慧养殖系统:牲畜行为分析应用

基于YOLO12的智慧养殖系统:牲畜行为分析应用 1. 引言 养殖场里,每天都有成千上万的牲畜需要照看。传统的人工巡查方式不仅耗时耗力,还容易漏掉一些重要信息。比如哪头牛今天没怎么活动,哪只羊看起来状态不对,这些细节…

作者头像 李华
网站建设 2026/7/22 13:28:55

QAnything PDF解析模型:快速搭建本地知识库

QAnything PDF解析模型:快速搭建本地知识库 1. 引言:为什么需要本地知识库系统? 在日常工作和学习中,我们经常需要从大量文档中快速找到需要的信息。无论是技术手册、研究报告还是业务文档,传统的关键词搜索往往难以…

作者头像 李华
网站建设 2026/7/22 9:54:12

一键部署CLAP音频分类器:从安装到使用全攻略

一键部署CLAP音频分类器:从安装到使用全攻略 1. 什么是CLAP音频分类器? CLAP音频分类器是一个基于LAION CLAP模型的智能音频识别工具。它能让你用简单的文字描述来识别音频内容,不需要任何专业的音频处理知识。 想象一下这样的场景&#x…

作者头像 李华
网站建设 2026/7/22 7:48:31

HY-Motion 1.0实战:用文本描述快速创建3D人体动作

HY-Motion 1.0实战:用文本描述快速创建3D人体动作 1. 引言 想象一下,你只需要用简单的文字描述,比如"一个人做深蹲,然后站起来推举杠铃",就能立即生成流畅的3D人体动画。这不再是科幻电影中的场景&#xf…

作者头像 李华