我想在redis中得到两个集合的diff,但我不需要返回整个数组,例如只返回10个项目。有什么方法可以限制结果吗?
我是这样想的:
SDIFF set1 set2 LIMIT 10
如果不是,考虑到set1可以是数百万个对象,而set2要小得多(数百个),还有没有其他选择可以以一种高性能的方式实现这一点。
发布于 2021-11-13 03:55:18
更多的信息会对你想要实现的目标有所帮助。类似这样的可能会要求您复制数据。虽然我不知道这是不是你想要的。
一种选择是将它们分块。
zadd(key, timestamp, chunkid)
其中,您的时间戳是unix时间,而chunkid是连接到集合的密钥。键可以是您希望的任何名称,也可以是唯一生成的id。
(对第二组重复步骤1-3 )
当你从两个已排序的集合“”中得到1个结果时,你就可以使用
请注意,这样做既有优点也有缺点。比如更多的连接消耗(如果从客户端调用),最明显的是需要更多的处理。不过,如果你把它放到一个lua脚本中,会有很大的帮助。
我希望这对你有所帮助,或者至少给你一个关于如何对你的数据建模的想法。但是,如果这是关键数据,您可能需要使用某种自动脚本来移动数据,以满足建模需求。
https://stackoverflow.com/questions/69861946
复制相似问题