3

在 Redis 中是否可以从 Set 中获取一系列项目?

我只注意到给你所有成员的 SMEMBERS。http://redis.io/commands#set

例如,如果我每次都必须在数百万个项目中使用 SMEMBERS,我只需要从索引 33,456 到 33,466 的 10 个。

每次我要求其中的 10 个时,SMEMBERS 都必须生成包含数百万个项目的完整列表。这不是性能杀手吗?还是因为 Redis 速度快而且可以这样使用,所以可以吗?

4

2 回答 2

4

你不能进入range集合,因为它是无序的,因此没有索引。但是,您可以使用SMEMBERS获取集合的所有成员

在 redis-cli

SMEMBERS my_set

此外,ZRange可能会帮助您在 redis 中使用Sorted Sets

在 redis-cli

ZRANGE your_key 33455 33465
于 2014-01-20T05:42:22.223 回答
2

不,这是不可能的,因为 Set 数据类型中不存在索引的概念。事实上,SMEMBERS不保证您的具体订单;每次调用时,元素的顺序很可能是随机的。将 Set 视为事物的无序集合:如果您需要存储一堆共享相同内容的 id,但如果您需要实现分页,则绝对不是要使用的数据类型。也许您正在寻找列表排序集

我建议阅读以下内容以了解 redis 中可用的数据类型以及何时使用它们:

于 2012-10-09T05:37:23.513 回答