Redis - 在字典HMGET中获取值

时间:2016-06-04 09:08:18

标签: python redis

我在redis中创建了一个密钥如下: -

In [1]: import redis

In [2]: conn = redis.Redis('localhost')

In [3]: user = {
   ...:         'name': 'username',
   ...:         'age': 25,
   ...:         'likes': ['football', 'swimming'],
   ...:         'response': {
   ...:                 'a': 1,
   ...:                 'b': 2
   ...:         }
   ...: }

In [4]: conn.hmset("pythonDict", user)
Out[4]: True

In [5]: conn.hgetall("pythonDict")
Out[5]: 
{'age': '25',
 'likes': "['football', 'swimming']",
 'name': 'username',
 'response': "{'a': 1, 'b': 2}"
}

所以,现在我想获得nameage等的值。

我做了以下事情: -

In [9]: conn.hmget("pythonDict","age", "likes")
Out[9]: ['25', "['football', 'swimming']"]

按预期工作。

现在我陷入了想要在响应中获得a值的地步。如何直接获取response[a]的值,而不是迭代它,即不在应用程序级别?

1 个答案:

答案 0 :(得分:0)

Redis不支持哈希中的嵌套数据结构。您的客户已将它们(likesresponse)编码为字符串(可能使用repr(),但可能使用JSON),hgetall()将它们作为字符串返回。

因此没有Redis命令可以获得a的值。但是,您可以将嵌套数据结构显式编码为JSON,然后编写一个简单的Lua script来提取服务器上的值。您可以使用附带的JSON library解包response并返回a的值。