如何在Redis中从列表中检索所有哈希值?
在Redis中,要存储对象数组,我们应该对对象使用哈希并将其键添加到列表中:如何在Redis中从列表中检索所有哈希值?,redis,Redis,在Redis中,要存储对象数组,我们应该对对象使用哈希并将其键添加到列表中: HMSET concept:unique_id name "concept" ... LPUSH concepts concept:unique_id ... 我想检索列表中的所有散列值(或对象),但列表只包含散列键,因此需要一个两步命令,对吗?这就是我在python中的工作方式: def get_concepts(): list = r.lrange("concepts", 0, -1) pipe
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()
是否需要迭代和获取每个单独的项目?是否可以进行更优化?您可以使用以下命令执行此操作:
SORT concepts BY nosort GET concept:*->name GET concept:*->some_key
其中,*
将扩展到列表中的每个项目
添加分页的限制偏移量计数
注意,您必须枚举散列中的每个字段(要获取的每个字段)
另一个选项是使用new(在redis 2.6中)命令在redis服务器中执行Lua脚本,这可以按照您的建议执行,但服务器端除外。您还可以将所有对象存储在列表中(例如,以序列化形式.JSON)。然后一个简单的LRANGE就可以了。谢谢Sergio,我没有考虑过这一点,但我更喜欢在Redis中操纵对象的属性,如果对象的属性之一是列表呢?e、 LPUSH概念:1:事物兔子。如何取而代之的是这个列表?你不能。只有那些你本可以
得到的东西
或HGET
。请参阅文档(链接在上面——redis命令通常有非常好的文档)。