我在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}"
}
所以,现在我想获得name
,age
等的值。
我做了以下事情: -
In [9]: conn.hmget("pythonDict","age", "likes")
Out[9]: ['25', "['football', 'swimming']"]
按预期工作。
现在我陷入了想要在响应中获得a
值的地步。如何直接获取response[a]
的值,而不是迭代它,即不在应用程序级别?
答案 0 :(得分:0)
Redis不支持哈希中的嵌套数据结构。您的客户已将它们(likes
和response
)编码为字符串(可能使用repr()
,但可能使用JSON),hgetall()
将它们作为字符串返回。
因此没有Redis命令可以获得a
的值。但是,您可以将嵌套数据结构显式编码为JSON,然后编写一个简单的Lua script来提取服务器上的值。您可以使用附带的JSON library解包response
并返回a
的值。