redis newbie - wie erstelle ich Hash innerhalb eines Hash?


12

Ich möchte diese Art von Struktur in redis erstellen: (im Grunde json Daten)

{
    "id": "0001",
    "name":"widget ABC",
    "model": "model123",
    "service":"standard",
    "admin_password": 82616416,
    "r1":
        {
            "extid":"50000",
            "password":"test123",
        },
    "r2":
        {
            "ext":"30000",
            "password":"test123",
        },
}

Was ich bisher versucht habe:

Ich habe versucht, einen Hash ohne die "Sub" -Hashes zu erstellen, nur um sicherzugehen, dass ich die Grundlagen habe. Also hier ist, womit ich vom Redis-Cli angefangen habe:

HMSET widget:1 id 0001 name 'widget ABC' model 'model123' service standard admin_password 82616416
HMSET widget:2 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234

Das scheint zu funktionieren. Ich kann sehen, dass ich 2 "Datensätze" von Widget-Daten in einer Widget-Sammlung habe.

Mein Versuch, einen Datensatz mit den r1-Daten zu erstellen, schlägt jedoch fehl.

Folgendes habe ich versucht:

HMSET widget:3 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234 r1{extid 50000} 

Dadurch wird ein Hash-Schlüssel "r1 {extid" mit einem Hash-Wert von "50000}" erstellt.

Anregungen wäre dankbar. Ich denke mein Problem ist mein Jargon. Ich weiß einfach nicht genug über die Redis-Syntax, um zu wissen, welche Wörter in meiner Google-Suche verwendet werden sollen.

Vielleicht muss ich die Daten einfach so "reduzieren":

HMSET widget:3 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234 r1_extid 50000 r1_password test123 r2_extid 30000 r2_password test123

Vielen Dank.

Antworten:


14

Redis unterstützt keine verschachtelten Datenstrukturen und insbesondere keinen Hash innerhalb eines Hash :) Grundsätzlich haben Sie die Wahl zwischen zwei Optionen: Entweder den internen Hash serialisieren und in einem Hash-Feld speichern oder einen anderen Hash-Schlüssel und verwenden Behalten Sie einfach einen Verweis darauf in einem Feld des äußeren Hash.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.