JSON-Modul
Unten finden Sie die vollständige Liste der JSON-Modulbefehle und deren Implementierungsstatus in Garnet.
Beachten Sie, dass sich diese Liste ändern kann, da wir die Unterstützung unserer API-Befehle mit Hilfe unserer wachsenden Community weiter ausbauen.
JSON-Befehlsliste
| Befehl | In Garnet implementiert | Hinweise |
|---|---|---|
| JSON.GET | ➕ | |
| JSON.SET | ➕ | |
| JSON.DEL | ➖ | |
| JSON.TYPE | ➖ | |
| JSON.NUMINCRBY | ➖ | |
| JSON.NUMMULTBY | ➖ | |
| JSON.STRAPPEND | ➖ | |
| JSON.STRLEN | ➖ | |
| JSON.ARRAPPEND | ➖ | |
| JSON.ARRINDEX | ➖ | |
| JSON.ARRINSERT | ➖ | |
| JSON.ARRLEN | ➖ | |
| JSON.ARRPOP | ➖ | |
| JSON.ARRTRIM | ➖ | |
| JSON.OBJKEYS | ➖ | |
| JSON.OBJLEN | ➖ |
Befehlsdetails
JSON.GET
Syntax
JSON.GET key [INDENT indent-string] [NEWLINE newline-string] [SPACE space-string] [path [path ...]]
Argumente
- key: Schlüssel, der das JSON-Dokument enthält
- INDENT: (Optional) Einrückungszeichenkette für „Pretty Printing“
- NEWLINE: (Optional) Neue Zeile Zeichenkette für „Pretty Printing“
- SPACE: (Optional) Leerzeichen Zeichenkette für „Pretty Printing“
- path: (Optional) JSONPath-ähnlicher Ausdruck zur Angabe der abzurufenden Elemente
Antwortformat
Gibt eines der folgenden Elemente zurück:
- Bulk-Zeichenkette: JSON-kodierter Wert, wenn der Pfad übereinstimmt
- Array: Wenn mehrere Pfade angefordert werden
- Null: Wenn Schlüssel oder Pfad nicht existiert
Beispiele
# Store a complex JSON object
JSON.SET example $ '{"name":"John","address":{"city":"London","postal":"SW1A"},"contacts":[{"type":"email","value":"john@example.com"},{"type":"phone","value":"123-456-789"}]}'
# Get entire document with pretty printing
JSON.GET example . INDENT " " NEWLINE "\n"
-> {"name":"John","address":{"city":"London","postal":"SW1A"},"contacts":[{"type":"email","value":"john@example.com"},{"type":"phone","value":"123-456-789"}]}
# Get multiple specific paths
JSON.GET example .name .address.city .contacts[0].value
-> ["John","London","john@example.com"]
# Get array elements with filter
JSON.GET example .contacts[?(@.type=="email")].value
-> ["john@example.com"]
JSON.SET
Syntax
JSON.SET key path value [NX | XX]
Argumente
- key: Schlüssel, unter dem das JSON-Dokument gespeichert werden soll
- path: JSONPath-ähnlicher Ausdruck, der den Speicherort angibt
- value: Gültiger JSON-Wert oder eine Zeichenkettendarstellung
- NX: Setze den Schlüssel nur, wenn er nicht existiert
- XX: Setze den Schlüssel nur, wenn er bereits existiert
Antwortformat
Gibt eines der folgenden Elemente zurück:
- "OK": Vorgang erfolgreich
- Null: Vorgang fehlgeschlagen (bei Verwendung von NX/XX-Bedingungen)
Beispiele
# Set with NX (only if not exists)
JSON.SET user:3 $ '{"name":"Bob"}' NX
-> OK
# Set with XX (only if exists)
JSON.SET user:3 .age '25' XX
-> OK
# Modify nested array
JSON.SET user:3 .profile.interests[1] '"reading"'
-> OK
Wichtige Hinweise
- Pfad muss mit einem Punkt (.) beginnen
- Zeichenkettenwerte müssen ordnungsgemäß maskiert sein
- Arrays sind nullbasiert indiziert
- Das Setzen eines nicht existierenden Elternpfads schlägt fehl
- NX und XX sind gegenseitig ausschließend
Unterstützte JSON-Pfadsyntax
| Pfadtyp | Syntax | Beschreibung | Beispiel | Hinweise |
|---|---|---|---|---|
| Stamm | . oder $ | Bezieht sich auf das JSON-Stammdokument | JSON.GET key $ | Beide Notationen werden unterstützt |
| Eigenschaftenzugriff | .eigenschaft oder $.eigenschaft | Greift auf eine direkte Eigenschaft eines Objekts zu | JSON.GET key $.name | Groß-/Kleinschreibung wird beachtet |
| Verschachtelte Eigenschaften | .prop1.prop2 oder $.prop1.prop2 | Greift auf verschachtelte Objek Eigenschaften zu | JSON.GET key $.address.city | |
| Array-Index | .array[n] oder $.array[n] | Greift auf das Array-Element am Index n zu | JSON.GET key $.users[0] | Nullbasierte Indizierung |
| Array-Slice | .array[start:end] | Ruft Array-Elemente von start bis end ab | JSON.GET key $.users[1:3] | Endindex ist exklusiv |
| Letztes Array-Element | .array[-1] | Greift auf das letzte Element des Arrays zu | JSON.GET key $.users[-1] | |
| Alle Array-Elemente | .[*] oder $[*] | Wählt alle Elemente in einem Array aus | JSON.GET key $[*] | |
| Array-Filter | .[?(@.prop==wert)] | Filtert Array-Elemente nach Bedingung | JSON.GET key $.users[?(@.age>21)] | |
| Mehrere Pfade | .prop1 .prop2 | Ruft mehrere Pfade gleichzeitig ab | JSON.GET key $.name $.age | |
| Platzhalter | .* oder $.* | Wählt alle Eigenschaften eines Objekts aus | JSON.GET key $.address.* | |
| Array anhängen | .[+] | Wird an ein Array angehängt (nur SET) | JSON.SET key $.list[+] value | Derzeit nicht unterstützt |
| Array-Bereich | .[start:] | Wählt Elemente von Anfang bis Ende aus | JSON.GET key $.list[2:] | |
| Bedingt | .[?(@.size=="L")] | Komplexe Array-Filterung | JSON.GET key $.items[?(@.size=="L")] | Unterstützt mehrere Bedingungen |
| Verschachtelte Arrays | .[*][0] oder $[*][0] | Greift auf verschachtelte Array-Elemente zu | JSON.GET key $.matrix[*][0] |
Besondere Überlegungen
- Array-Indizes sind nullbasiert
- Eigenschaftsnamen sind Groß-/Kleinschreibung-sensitiv
- Ungültige Pfade geben Null zurück
- Mehrere Filter können mit && und || kombiniert werden