2017-08-23 4 views
2

Ich habe einen Schlüssel, der Felder und Werte hat. Alle Felder haben String-Werte. Eines dieser Felder Ich möchte, dass es eine Tabelle oder ein Satz oder eine Liste ist (was bedeutet, dass mehrere Werte beibehalten werden). Dieses Feld heißt zonetable Ich weiß nur, wie man hset verwendet, aber so weit ich weiß, kann es nicht tun, was ich will. Ich möchte etwas wie dasTabelle in einem Wert in Redis setzen

hmset L0001 tun: ad65ed38-66b0-46b4-955c-9ff4304e5c1a field1 blabla field2 blibli zonetable [1,2,3,4]

Key : L0001:ad65ed38-66b0-46b4-955c-9ff4304e5c1a 
field1: "string value" 
field2: "string value" 
zonetable: [1,2,3,4] ---- the table 

Antwort

1

Vielleicht können Sie die Verwendung von Json machen. Verwenden Sie json serialisieren Sie Ihre Tabelle (Liste oder etwas) in eine JSON-Zeichenfolge, und verwenden Sie dann hset, um es in Ihrem redis zu speichern.

Wenn Sie es abrufen möchten, erhalten Sie es zuerst von redis und dann deserialisieren es von JSON zur Liste.

Wenn Sie Python verwenden, können Sie es wie folgt tun:

table = json.dumps(zonetable) 
redis.hset(Key, 'zonetable', table) 

, wenn Sie es abrufen möchten:

table = redis.hget(Key, 'zonetable') 
zonetable = json.loads(table) 

Wie Sie sagen, Sie den nativen Befehl verwenden, können Sie auch mach das.

erste, konvertieren Sie Ihre zonetable zu JSON-String mit Python-Interpreter

>>> import json 
>>> table = [1,2,3,4] 
>>> json.dumps(table) 
'[1, 2, 3, 4]' 

dann verwenden, um dies in redis-cli

hmset L0001:ad65ed38-66b0-46b4-955c-9ff4304e5c1a field1 blabla field2 blibli zonetable '[1,2,3,4]' 

Ja, eine Sache möchte ich sagen, wenn Sie das wissen rule of how to convert object to json, könnten Sie es selbst tun.

0

Sie kann SADD verwenden:

Fügen Sie die angegebenen Elemente zu dem Satz hinzu, der unter Schlüssel gespeichert wird. Angegebene Mitglieder, die bereits Mitglied dieser Gruppe sind, werden ignoriert. Wenn der Schlüssel nicht existiert, wird ein neuer Satz erstellt, bevor die angegebenen Mitglieder hinzugefügt werden.

Es wird ein Fehler zurückgegeben, wenn der unter Schlüssel gespeicherte Wert kein Satz ist.

Beispiel:

SADD YOUR_KEY "test1" 
SADD YOUR_KEY "test2" 

SMEMBERS YOUR_KEY 

Ausgang:

test1
test2

Sie können auch HMSET verwenden:

HMSET YOUR_KEY field1 "Hello" field2 "World" 

HGET myhash 

Ausgang:

Hallo Welt

+0

Aber so wie du es beschrieben hast, kann ich einfach ein Set erstellen. Ich möchte nicht nur ein Set erstellen; Ich möchte dieses Set als Wert von zonetable setzen, das ein Feld des Schlüssels L0001 ist: ad65ed38-66b0-46b4-955c-9ff4304e5c1a. Dieser Schlüssel hat bereits viele Felder mit String-Werten, eines dieser Felder ist zonetable – Grandmaster

+0

Sie können 'set hash" {\ "a \": \ "b \"} "' verwenden –

Verwandte Themen