3

在 Redis 中,要存储对象数组,我们应该对对象使用哈希并将其键添加到列表中:

HMSET concept:unique_id name "concept"
...
LPUSH concepts concept:unique_id
...

我想检索列表中的所有哈希值(或对象),但列表只包含哈希键,所以需要一个两步命令,对吧?这就是我在 python 中的做法:

def get_concepts():

    list = r.lrange("concepts", 0, -1)
    pipe = r.pipeline()

    for key in list:
         pipe.hgetall(key)
    pipe.execute()

是否有必要迭代和获取每个单独的项目?可以更优化吗?

4

1 回答 1

4

您可以使用SORT命令执行此操作:

SORT concepts BY nosort GET concept:*->name GET concept:*->some_key

Where*将扩展到列表中的每个项目。

添加LIMIT offset count用于分页。

请注意,您必须枚举散列中的每个字段(您要获取的每个字段)。

另一种选择是使用新的(在 redis 2.6 中)EVAL命令在 redis 服务器中执行 Lua 脚本,这可以执行您的建议,但在服务器端。

于 2012-11-06T15:49:19.303 回答