Redis 难懂命令-- ZINTERSTORE

**背景:**学习的过程中 常用的redis命令都能快速通过官方文档理解 但是还是有一些比较难懂的命令

**目的:**写博客记录一下(当然也可以使用AI搜索)

在Redis中,ZINTERSTORE 是一个用于计算多个有序集合(Sorted Set)交集的命令,其主要功能是将多个有序集合的交集结果存储到一个新的有序集合中。以下是关于 ZINTERSTORE 的详细用法和相关说明:


1. 基本语法

ZINTERSTORE 的语法如下:

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
  • destination:目标键,用于存储交集结果。
  • numkeys:参与交集运算的有序集合数量。
  • key:参与交集运算的有序集合的键。
  • WEIGHTS:为每个有序集合的成员分数指定权重,用于加权计算。
  • AGGREGATE:指定交集中成员的分数计算方式,可选值为 SUMMINMAX

2. 功能说明

  • 交集运算ZINTERSTORE 会计算所有指定有序集合的交集,即只保留那些在所有输入集合中都存在的成员。

  • 分数计算:

    • 默认值(SUM) :交集结果中每个成员的分数是所有输入集合中该成员分数的总和。
    • MIN:交集结果中每个成员的分数是所有输入集合中该成员分数的最小值。
    • MAX:交集结果中每个成员的分数是所有输入集合中该成员分数的最大值。

3. 示例

示例1:基本用法
ZADD srcset1 5 M 6 N 7 O
ZADD srcset2 3 N 2 O 4 P
ZINTERSTORE desset 2 srcset1 srcset2
ZRANGE desset 0 -1 WITHSCORES

输出

1) "N"
2) "9"
3) "O"
4) "9"

在这个示例中,desset 存储了 srcset1srcset2 的交集结果,并且每个成员的分数是两个集合中对应分数的总和。

示例2:使用权重
ZADD srcset1 5 M 6 N 7 O
ZADD srcset2 3 N 2 O 4 P
ZINTERSTORE desset 2 srcset1 srcset2 WEIGHTS 2 3
ZRANGE desset 0 -1 WITHSCORES

输出

1) "N"
2) "15"
3) "O"
4) "13"

在这个示例中,srcset1 的权重为 2,srcset2 的权重为 3,每个成员的分数是两个集合中对应分数乘以权重后的总和。

示例3:使用MIN聚合
ZADD srcset1 5 M 6 N 7 O
ZADD srcset2 3 N 2 O 4 P
ZINTERSTORE desset 2 srcset1 srcset2 AGGREGATE MIN
ZRANGE desset 0 -1 WITHSCORES

输出

1) "N"
2) "6"
3) "O"
4) "7"

在这个示例中,desset 存储了 srcset1srcset2 的交集结果,并且每个成员的分数是两个集合中对应分数的最小值。


4. 注意事项

  • 键类型检查:如果任何输入键不是有序集合(Sorted Set),ZINTERSTORE 会返回错误。

  • 结果覆盖:如果目标键 destination 已经存在,ZINTERSTORE 会覆盖该键的内容。

  • 性能优化ZINTERSTORE 的时间复杂度为 O(N * log M),其中 N 是输入集合的基数, M 是输出集合的基数。可以通过减少输入集合的数量或结果集的大小来优化性能 。

img

5. 应用场景

  • 数据交集:用于查找多个数据集中的共同元素。
  • 数据聚合:用于计算多个数据集中的最小值或最大值。
  • 数据分析:用于分析不同数据集之间的关系,例如用户行为分析、商品推荐等。

6. 总结

ZINTERSTORE 是 Redis 中一个非常强大的命令,用于计算多个有序集合的交集,并将结果存储到一个新的有序集合中。通过合理使用 WEIGHTSAGGREGATE 参数,可以实现灵活的分数计算和数据聚合。在实际应用中,ZINTERSTORE 可以用于数据交集、数据聚合、数据分析等多个场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/82309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React 路由管理与动态路由配置实战

React 路由管理与动态路由配置实战 前言 在现代单页应用(SPA)开发中,路由管理已经成为前端架构的核心部分。随着React应用规模的扩大,静态路由配置往往难以满足复杂业务场景的需求,尤其是当应用需要处理权限控制、动态菜单和按需加载等高级…

【学习笔记】深度学习-梯度概念

一、定义 梯度向量不仅表示函数变化的速度,还表示函数增长最快的方向 二、【问】为什么说它表示方向? 三、【问】那在深度学习梯度下降的时候,还要判断梯度是正是负来更新参数吗? 假设某个参数是 w,损失函数对它的…

题海拾贝:P8598 [蓝桥杯 2013 省 AB] 错误票据

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 1、题…

webpack的安装及其后序部分

npm install原理 这个其实就是npm从registry下载项目到本地&#xff0c;没有什么好说的 值得一提的是npm的缓存机制&#xff0c;如果多个项目都需要同一个版本的axios&#xff0c;每一次重新从registry中拉取的成本过大&#xff0c;所以会有缓存&#xff0c;如果缓存里有这个…

百度golang研发一面面经

输入一个网址&#xff0c;到显示界面&#xff0c;中间的过程是怎样的 IP 报文段的结构是什么 Innodb 的底层结构 知道几种设计模式 工厂模式 简单工厂模式&#xff1a;根据传入类型参数判断创建哪种类型对象工厂方法模式&#xff1a;由子类决定实例化哪个类抽象工厂模式&#…

使用 HTML + JavaScript 实现图片裁剪上传功能

本文将详细介绍一个基于 HTML 和 JavaScript 实现的图片裁剪上传功能。该功能支持文件选择、拖放上传、图片预览、区域选择、裁剪操作以及图片下载等功能&#xff0c;适用于需要进行图片处理的 Web 应用场景。 效果演示 项目概述 本项目主要包含以下核心功能&#xff1a; 文…

GO+RabbitMQ+Gin+Gorm+docker 部署 demo

更多个人笔记见&#xff1a; &#xff08;注意点击“继续”&#xff0c;而不是“发现新项目”&#xff09; github个人笔记仓库 https://github.com/ZHLOVEYY/IT_note gitee 个人笔记仓库 https://gitee.com/harryhack/it_note 个人学习&#xff0c;学习过程中还会不断补充&…

【安全】VulnHub靶场 - W1R3S

【安全】VulnHub靶场 - W1R3S 备注一、故事背景二、Web渗透1.主机发现端口扫描2.ftp服务3.web服务 三、权限提升 备注 2025/05/22 星期四 简单的打靶记录 一、故事背景 您受雇对 W1R3S.inc 个人服务器进行渗透测试并报告所有发现。 他们要求您获得 root 访问权限并找到flag&…

WEB安全--SQL注入--MSSQL注入

一、SQLsever知识点了解 1.1、系统变量 版本号&#xff1a;version 用户名&#xff1a;USER、SYSTEM_USER 库名&#xff1a;DB_NAME() SELECT name FROM master..sysdatabases 表名&#xff1a;SELECT name FROM sysobjects WHERE xtypeU 字段名&#xff1a;SELECT name …

工作流引擎-18-开源审批流项目之 plumdo-work 工作流,表单,报表结合的多模块系统

工作流引擎系列 工作流引擎-00-流程引擎概览 工作流引擎-01-Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎&#xff0c;支持现实世界的流程自动化需求 工作流引擎-02-BPM OA ERP 区别和联系 工作流引擎-03-聊一聊流程引擎 工作流引擎-04-流程引擎 activiti 优…

Docker 笔记 -- 借助AI工具强势辅助

常用命令 镜像管理命令&#xff1a; docker images&#xff08;列出镜像&#xff09; docker pull&#xff08;拉取镜像&#xff09; docker build&#xff08;构建镜像&#xff09; docker save/load&#xff08;保存/加载镜像&#xff09; 容器操作命令 docker run&#…

5G-A时代与p2p

5G-A时代正在走来&#xff0c;那么对P2P的影响有多大。 5G-A作为5G向6G过渡的关键技术&#xff0c;将数据下载速率从千兆提升至万兆&#xff0c;上行速率从百兆提升至千兆&#xff0c;时延降至毫秒级。这种网络性能的跨越式提升&#xff0c;为P2P提供了更强大的底层支撑&#x…

Redis-6.2.9 主从复制配置和详解

1 主从架构图 192.168.254.120 u24-redis-120 #主库 192.168.254.121 u24-redis-121 #从库 2 redis软件版本 rootu24-redis-121:~# redis-server --version Redis server v6.2.9 sha00000000:0 malloclibc bits64 build56edd385f7ce4c9b 3 主库redis配置文件(192.168.254.1…

004 flutter基础 初始文件讲解(3)

之前&#xff0c;我们正向的学习了一些flutter的基础&#xff0c;如MaterialApp&#xff0c;Scaffold之类的东西&#xff0c;那么接下来&#xff0c;我们将正式接触原代码&#xff1a; import package:flutter/material.dart;void main() {runApp(const MyApp()); }class MyAp…

Linux 系统 Docker Compose 安装

个人博客地址&#xff1a;Linux 系统 Docker Compose 安装 | 一张假钞的真实世界 本文方法是直接下载 GitHub 项目的 release 版本。项目地址&#xff1a;GitHub - docker/compose: Define and run multi-container applications with Docker。 执行以下命令将发布程序加载至…

Tree 树形组件封装

整体思路 数据结构设计 使用递归的数据结构&#xff08;TreeNode&#xff09;表示树形数据每个节点包含id、name、可选的children数组和selected状态 状态管理 使用useState在组件内部维护树状态的副本通过deepCopyTreeData函数进行深拷贝&#xff0c;避免直接修改原始数据 核…

tortoisegit 使用rebase修改历史提交

在 TortoiseGit 中使用 rebase 修改历史提交&#xff08;如修改提交信息、合并提交或删除提交&#xff09;的步骤如下&#xff1a; --- ### **一、修改最近一次提交** 1. **操作**&#xff1a; - 右键项目 → **TortoiseGit** → **提交(C)** - 勾选 **"Amend…

中科院报道铁电液晶:从实验室突破到多场景应用展望

2020年的时候&#xff0c;相信很多关注科技前沿的朋友都注意到&#xff0c;中国科学院一篇报道聚焦一项有望改写显示产业格局的新技术 —— 铁电液晶&#xff08;FeLC&#xff09;。这项被业内称为 "下一代显示核心材料" 的研究&#xff0c;究竟取得了哪些实质性进展…

论文阅读(六)Open Set Video HOI detection from Action-centric Chain-of-Look Prompting

论文来源&#xff1a;ICCV&#xff08;2023&#xff09; 项目地址&#xff1a;https://github.com/southnx/ACoLP 1.研究背景与问题 开放集场景下的泛化性&#xff1a;传统 HOI 检测假设训练集包含所有测试类别&#xff0c;但现实中存在大量未见过的 HOI 类别&#xff08;如…

74道Node.js高频题整理(附答案背诵版)

简述 Node. js 基础概念 &#xff1f; Node.js是一个基于Chrome V8引擎的JavaScript运行环境。它使得JavaScript可以在服务器端运行&#xff0c;从而进行网络编程&#xff0c;如构建Web服务器、处理网络请求等。Node.js采用事件驱动、非阻塞I/O模型&#xff0c;使其轻量且高效…