ich einen Schlüssel in den redis wie folgt erstellt haben: -Redis - Get Werte in einem dict HMGET
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}"
}
So, jetzt will ich die Werte von name
bekommen, age
usw.
Ich tat folgendes: -
In [9]: conn.hmget("pythonDict","age", "likes")
Out[9]: ['25', "['football', 'swimming']"]
Arbeiten wie erwartet.
Jetzt bin ich an einem Punkt fest, wo ich den Wert a
innerhalb der Antwort erhalten möchte. Wie kann ich direkt den Wert response[a]
erhalten, ohne darüber zu iterieren, also nicht auf der Anwendungsebene ???
--- 'Ihr Client scheint sie (Likes und Response) als JSON-Strings codiert zu haben, und hgetall() gibt sie als Strings zurück. Dies ist das Standardverhalten von redis. Behandelt jeden Wert des Hash-Schlüssels als Zeichenfolge. – PythonEnthusiast
@PythonEnthusiast: Es ist der Client, der entscheidet, welche Bytes an Redis gesendet werden sollen. Wenn Sie ein Python-Objekt übergeben, entscheidet der Client, wie es in eine Zeichenfolge umgewandelt wird. Es könnte 'str()' verwenden, es könnte 'repr()' verwenden, es könnte 'pickle' verwenden, es könnte JSON verwenden, es könnte eine Ausnahme auslösen usw. –
Gibt es eine Möglichkeit,' lpush, lrange' zu feuern Befehle an 'user ['likes']' direkt ?? Oder wird das auf Anwendungsebene gemacht? – PythonEnthusiast