我已经创建了一个关键的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]
的值,而不对其进行迭代,即不在应用程序级别???
1条答案
按热度按时间ijnw1ujt1#
Redis不支持哈希中的嵌套数据结构,客户端将它们(
likes
和response
)编码为字符串(可能使用repr()
,也可能使用JSON),hgetall()
将它们返回为字符串。因此,Redis没有命令来获取
a
的值,但是,您可以将嵌套的数据结构显式编码为JSON,然后编写一个简单的Lua script来在服务器上提取值,您可以使用包含的JSON库来解包response
并返回a
的值。