Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Rufen Sie alle Felder und Werte des Hash-Schlüssels mit Redis im Knoten ab

Sie erhalten nur einen Wert, weil Sie den vorherigen Wert überschreiben.

client.hmset("Table1", "Id", "9324324", "ReqNo", "23432", redis.print);

Dies fügt Id, ReqNo zum Table1-Hash-Objekt hinzu.

client.hmset("Table1", "Id", "9324325", "ReqNo", "23432", redis.print);

Dies überschreibt Id und ReqNo für das Table1-Hash-Objekt. An diesem Punkt haben Sie nur zwei Felder im Hash.

Eigentlich kommt Ihr Problem von der Tatsache, dass Sie versuchen, ein relationales Datenbankmodell auf Redis abzubilden. Du solltest nicht. Bei Redis ist es besser, in Datenstrukturen und Zugriffspfaden zu denken.

Sie müssen ein Hash-Objekt pro Datensatz speichern. Zum Beispiel:

HMSET Id:9324324 ReqNo 23432 ... and some other properties ...
HMSET Id:9324325 ReqNo 23432 ... and some other properties ...

Dann können Sie einen Satz verwenden, um die IDs zu speichern:

SADD Table1 9324324 9324325

Schließlich, um die ReqNo-Daten abzurufen, die der Table1-Sammlung zugeordnet sind:

SORT Table1 BY NOSORT GET # GET Id:*->ReqNo

Wenn Sie auch nach allen IDs suchen möchten, die zu einer bestimmten ReqNo gehören, benötigen Sie eine andere Struktur, um diesen Zugriffspfad zu unterstützen:

SADD ReqNo:23432 9324324 9324325

Sie können also die Liste der IDs für den Datensatz 23432 abrufen, indem Sie Folgendes verwenden:

SMEMBERS ReqNo:23432

Mit anderen Worten, versuchen Sie nicht, ein relationales Modell zu transponieren:Erstellen Sie einfach Ihre eigenen Datenstrukturen, die Ihre Anwendungsfälle unterstützen.