Redis -获取字典HMGET中的值

yc0p9oo0  于 2022-10-31  发布在  Redis
关注(0)|答案(1)|浏览(152)

我已经创建了一个关键的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]的值,而不对其进行迭代,即不在应用程序级别???

ijnw1ujt

ijnw1ujt1#

Redis不支持哈希中的嵌套数据结构,客户端将它们(likesresponse)编码为字符串(可能使用repr(),也可能使用JSON),hgetall()将它们返回为字符串。
因此,Redis没有命令来获取a的值,但是,您可以将嵌套的数据结构显式编码为JSON,然后编写一个简单的Lua script来在服务器上提取值,您可以使用包含的JSON库来解包response并返回a的值。

相关问题