Redis zinterstore

Redis zinterstore (有序集合交集存储)

一、作用

zinterstore:把多个 ZSet 有序集合做交集 ,并把结果存入一个新的 ZSet ,自动覆盖目标 key。

语法:

redis

复制代码
zinterstore 目标key 数量 集合1 集合2 [集合3...] [weights 权重] [aggregate sum/min/max]

二、核心规则

  1. 只保留同时出现在所有 ZSet 里的成员(交集)
  2. 交集后的分数 可以按 sum、min、max 合并计算
  3. 第一个参数是目标 key ,原有数据直接被覆盖(和 set 的 sinterstore 一个设计逻辑)
  4. 第二个参数要写参与计算的集合个数,不能漏

三、最简示例

准备两个有序集合:

redis

复制代码
zadd rank:a 10 张三 20 李四 30 王五
zadd rank:b 15 李四 25 王五 35 赵六

求交集,存入 rank:inter:

redis

复制代码
zinterstore rank:inter 2 rank:a rank:b

交集成员:李四、王五 默认分数规则:sum 累加

  • 李四:20+15 = 35
  • 王五:30+25 = 55

查看结果:

redis

复制代码
zrange rank:inter 0 -1 withscores

四、自定义聚合规则

1. 取分数最小值

redis

复制代码
zinterstore rank:inter 2 rank:a rank:b aggregate min

2. 取分数最大值

redis

复制代码
zinterstore rank:inter 2 rank:a rank:b aggregate max

五、权重 weights 用法

给每个集合的分数先乘权重,再聚合:

redis

复制代码
zinterstore rank:inter 2 rank:a rank:b weights 2 1 aggregate sum

意思:

  • rank:a 每个分数 ×2
  • rank:b 每个分数 ×1
  • 再按 sum 相加

六、应用场景

  1. 共同好友 + 带权重排序两个人共同好友,再按亲密值 / 互动分排序。

  2. 多条件榜单筛选同时满足「付费用户」「活跃用户」两个 ZSet,交集后生成精准榜单。

  3. 商品多维度评分合并销量、好评、热度多个榜单,交集后加权算出综合排名。

  4. 推荐系统过滤从候选推荐列表中,过滤掉已浏览、已拉黑用户,保留交集并重新计分排序。

七、一句话总结

zinterstore 是 ZSet 交集并持久化 ,可对分数做 sum/min/max 聚合,支持权重,目标 key 会直接覆盖旧数据,适合做带分数排序的共同关系、多条件筛选、加权排行榜。

相关推荐
罗湖老棍子1 小时前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
stsdddd3 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
CV爱数码4 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n5 小时前
【算法】约瑟夫环问题
java·算法
l1t5 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil2085 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE5 小时前
10.18【A】
算法
LMT流氓兔6 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain
物联网软硬件开发-轨物科技7 小时前
【轨物方案】深度解读开关柜智能感知及一键顺控专家系统
大数据·运维·网络·人工智能·算法·机器人
行者全栈架构师7 小时前
我用 TRAE Work 把桌游之夜搬进了浏览器:一个计分器的从创意到上线
前端·算法·架构