【发布时间】:2012-09-29 00:30:18
【问题描述】:
在 Redis 中是否可以从 Set 中获取一系列项目?
我只注意到给你所有成员的 SMEMBERS。 http://redis.io/commands#set
例如,如果我每次都必须在数百万个项目中使用 SMEMBERS,我只需要从索引 33,456 到 33,466 的 10 个。
每次我要求其中的 10 个时,SMEMBERS 都必须生成包含数百万个项目的完整列表。这不是性能杀手吗?还是因为 Redis 速度快而且就应该这样使用所以没关系?
【问题讨论】:
-
集合是无序的数据结构。在集合中按范围获取项目是没有意义的。没有索引的概念。也许您应该使用列表或排序集?
-
仅供参考:从Redis 2.6.0-RC8 开始,现在有一个
SRANDMEMBER <count>命令返回多个随机元素,您可能会觉得这些元素很有用。 -
您可以使用功能相对丰富的 sort 命令实现您的目标:redis.io/commands/sort