如何从Redis中的列表中检索所有哈希值?

时间:2012-11-06 15:06:58

标签: redis

在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()

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

1 个答案:

答案 0 :(得分:4)

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

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

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

添加LIMIT offset count以进行分页。

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

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