首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sdiff -将结果集限制为X个项目

sdiff -将结果集限制为X个项目
EN

Stack Overflow用户
提问于 2021-11-06 06:34:17
回答 1查看 24关注 0票数 0

我想在redis中得到两个集合的diff,但我不需要返回整个数组,例如只返回10个项目。有什么方法可以限制结果吗?

我是这样想的:

SDIFF set1 set2 LIMIT 10

如果不是,考虑到set1可以是数百万个对象,而set2要小得多(数百个),还有没有其他选择可以以一种高性能的方式实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2021-11-13 03:55:18

更多的信息会对你想要实现的目标有所帮助。类似这样的可能会要求您复制数据。虽然我不知道这是不是你想要的。

一种选择是将它们分块。

  1. 使用唯一生成的id创建一个集合,该集合最多可容纳10个项目

  1. 创建一个类似于…的排序集

zadd(key, timestamp, chunkid)

其中,您的时间戳是unix时间,而chunkid是连接到集合的密钥。键可以是您希望的任何名称,也可以是唯一生成的id。

  1. 使用zrange抓取特定的

(对第二组重复步骤1-3 )

当你从两个已排序的集合“”中得到1个结果时,你就可以使用

  1. 了。现在,您可以使用chunkid来执行您的sdiff。

请注意,这样做既有优点也有缺点。比如更多的连接消耗(如果从客户端调用),最明显的是需要更多的处理。不过,如果你把它放到一个lua脚本中,会有很大的帮助。

我希望这对你有所帮助,或者至少给你一个关于如何对你的数据建模的想法。但是,如果这是关键数据,您可能需要使用某种自动脚本来移动数据,以满足建模需求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69861946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档