Garnet-spezifische Befehle
Neben Garnets Server-Erweiterungen unterstützen wir viele API-Aufrufe, die in anderen RESP-Servern nicht verfügbar sind. Diese werden nachfolgend beschrieben.
FORCEGC
Syntax
FORCEGC [generation]
Löst die Garbage Collection auf der Serverseite aus. Optional kann die Generationsebene für die Sammlung angegeben werden. Weitere Informationen finden Sie in diesem Artikel.
Resp Reply
Einfache Zeichenketten-Antwort: OK.
COMMITAOF
Syntax
COMMITAOF [DBID]
Gibt einen manuellen Commit der Append-Only-Datei (für alle aktiven Datenbanken in der Garnet-Instanz) aus. Dies ist nützlich, wenn automatische Commits deaktiviert sind, Sie aber möchten, dass das System zu bestimmten Zeiten committet. Wenn eine DB-ID angegeben wird, wird ein manueller Commit der Append-Only-Datei dieser spezifischen Datenbank ausgelöst.
Resp Reply
Einfache Zeichenketten-Antwort: OK.
HCOLLECT
Syntax
HCOLLECT key [key ...]
Löst manuell die Bereinigung abgelaufener Felder aus dem Speicher für einen bestimmten Hash-Set-Schlüssel aus.
Verwenden Sie * als Schlüssel, um ihn aus allen Hash-Schlüsseln zu sammeln.
RESP-Antwort
Einfache Antwort: OK-Antwort Fehlerantwort: ERR HCOLLECT-Scan bereits in Bearbeitung
ZCOLLECT
Syntax
ZCOLLECT key [key ...]
Löst manuell die Bereinigung abgelaufener Mitglieder aus dem Speicher für einen bestimmten Hash-Set-Schlüssel aus.
Verwenden Sie * als Schlüssel, um ihn aus allen sortierten Set-Schlüsseln zu sammeln.
RESP-Antwort
Einfache Antwort: OK-Antwort Fehlerantwort: ERR ZCOLLECT-Scan bereits in Bearbeitung
COSCAN
Syntax
COSCAN key cursor [MATCH pattern] [COUNT count] [NOVALUES]
Custom Object Scan ist ähnlich wie HSCAN und SSCAN. Es iteriert über die Felder und Werte eines benutzerdefinierten Objekts, das an einem bestimmten Schlüssel gespeichert ist.
Der Parameter `match` ermöglicht das Anwenden eines Filters auf Elemente, nachdem sie aus der Sammlung abgerufen wurden. Die Option `count` begrenzt die maximale Anzahl von Elementen, die von diesem Befehl vom Server zurückgegeben werden. Diese Begrenzung wird auch in Verbindung mit der Einstellung `object-scan-count-limit` der globalen Server-Einstellungen angewendet.
Sie können die Option NOVALUES verwenden, damit Garnet nur die Schlüssel ohne ihre entsprechenden Werte zurückgibt.
SECONDARYOF
Konfiguriert einen Server als sekundär eines anderen oder befördert ihn zum primären. Identisch mit REPLICAOF.
REGISTERCS
Dies ermöglicht die Registrierung spezifischer benutzerdefinierter Befehle und Transaktionen, die in C# implementiert sind, in einer serverseitigen DLL-Bibliothek. Weitere Details finden Sie auf dieser Seite.
RUNTXP
Syntax
RUNTXP txid [args]
Führt die spezifische benutzerdefinierte transaktionale Prozedur aus, die durch ihre ID identifiziert wird.
WATCHMS
Syntax
WATCHMS key [key ...]
Identisch mit WATCH, gibt jedoch an, dass der Schlüssel nur im Hauptspeicher (roher String) vorhanden ist.
WATCHOS
Syntax
WATCHOS key [key ...]
Identisch mit WATCH, gibt jedoch an, dass der Schlüssel nur im Objektspeicher vorhanden ist.
ASYNC
Asynchrone Schnittstelle zu Garnet beim Zugriff auf größere Datenmengen als der Arbeitsspeicher. Details finden Sie unter diesem Link.
MODULE LOADCS
Dies ist das Äquivalent von MODULE LOAD im ursprünglichen RESP-Protokoll. Dies lädt ein in sich geschlossenes Modul, in dem der Initialisierungscode des Moduls alle relevanten Befehle und Transaktionen automatisch registriert. Details finden Sie auf dieser Seite.
Nativer ETag-Support
Garnet bietet Unterstützung für ETags bei rohen Strings. Durch die Verwendung der nachfolgend beschriebenen ETag-bezogenen Befehle können Sie jedem in Garnet eingefügten **stringbasierten Schlüssel-Wert-Paar** einen automatisch aktualisierten ETag zuweisen.
Die Kompatibilität mit Nicht-ETag-Befehlen und das Verhalten von mit ETags eingefügten Daten werden am Ende dieses Dokuments beschrieben. Um ein Schlüssel-Wert-Paar mit einem ETag zu initialisieren, können Sie entweder den Befehl SET mit dem neu hinzugefügten optionalen Flag "WITHETAG" verwenden oder jedes vorhandene Schlüssel-Wert-Paar nehmen und SETIFMATCH mit dem ETag-Argument als 0 aufrufen (jedes Schlüssel-Wert-Paar ohne explizites ETag hat implizit ein ETag von 0). Lesen Sie mehr über ETag-Anwendungsfälle und -muster hier
SET (WITHETAG)
Syntax
SET key value [NX | XX] [EX seconds | PX milliseconds] [KEEPTTL] WITHETAG
Setzt den **Schlüssel** auf den String-Wert zusammen mit einem ETag. Wenn der Schlüssel bereits einen Wert hat, wird er überschrieben, unabhängig von seinem Typ. Jede vorherige Gültigkeitsdauer, die mit dem **Schlüssel** verknüpft war, wird bei einem erfolgreichen SET-Vorgang verworfen.
Optionen
- EX Sekunden -- Legt die angegebene Ablaufzeit in Sekunden fest (eine positive Ganzzahl).
- PX Millisekunden -- Legt die angegebene Ablaufzeit in Millisekunden fest (eine positive Ganzzahl).
- NX -- Setzt den Schlüssel nur, wenn er noch nicht existiert.
- XX -- Setzt den Schlüssel nur, wenn er bereits existiert.
- KEEPTTL -- Behält die mit dem Schlüssel verknüpfte Gültigkeitsdauer bei.
- WITHETAG -- **Dadurch wird das Schlüssel-Wert-Paar mit einem anfänglichen ETag gesetzt**. Wenn es auf ein bestehendes Schlüssel-Wert-Paar mit einem ETag angewendet wird, aktualisiert dieser Befehl das ETag transparent.
RESP-Antwort
- Ganzzahlantwort: WITHETAG gegeben: Das mit dem Wert verbundene ETag.
GETWITHETAG
Syntax
GETWITHETAG key
Ruft den Wert und das ETag ab, die mit dem gegebenen Schlüssel verbunden sind.
Antwort
Eine der folgenden
- Array-Antwort: Ein Array mit zwei Elementen, das bei Erfolg zurückgegeben wird. Das erste Element ist eine Ganzzahl, die das ETag darstellt, und das zweite ist der Bulk-String-Wert des Schlüssels. Wenn es auf ein Schlüssel-Wert-Paar ohne ETag angewendet wird, ist das ETag 0.
- Nil-Antwort: Wenn der Schlüssel nicht existiert.
SETIFMATCH
Syntax
SETIFMATCH key value etag [EX seconds | PX milliseconds] [NOGET]
Setzt/aktualisiert ein Schlüssel-Wert-Paar mit dem gegebenen ETag nur, wenn (1) das in der Anfrage gegebene ETag mit dem bereits vorhandenen ETag übereinstimmt; oder (2) kein vorhandener Wert vorhanden war; oder (3) der vorhandene Wert nicht mit einem ETag verknüpft war und das gesendete ETag 0 war.
Optionen
- EX Sekunden -- Legt die angegebene Ablaufzeit in Sekunden fest (eine positive Ganzzahl).
- PX Millisekunden -- Legt die angegebene Ablaufzeit in Millisekunden fest (eine positive Ganzzahl).
- NOGET -- Der Wert wird nicht zurückgegeben, auch wenn das ETag nicht übereinstimmt
Antwort
- Array-Antwort: Wenn das gesendete ETag mit dem vorhandenen ETag übereinstimmt, ist die Antwort ein Array, bei dem das erste Element das aktualisierte ETag und das zweite Element nil ist. Wenn die ETags nicht übereinstimmen, enthält das Antwort-Array das neueste ETag und den neuesten Wert in der Reihenfolge.
SETIFGREATER
Syntax
SETIFGREATER key value etag [EX seconds | PX milliseconds] [NOGET]
Setzt/aktualisiert ein Schlüssel-Wert-Paar mit dem gegebenen ETag nur, wenn (1) das in der Anfrage gegebene ETag größer ist als das bereits vorhandene ETag; oder (2) kein vorhandener Wert vorhanden war; oder (3) der vorhandene Wert nicht mit einem ETag verknüpft war und das gesendete ETag größer als 0 war.
Optionen
- EX Sekunden -- Legt die angegebene Ablaufzeit in Sekunden fest (eine positive Ganzzahl).
- PX Millisekunden -- Legt die angegebene Ablaufzeit in Millisekunden fest (eine positive Ganzzahl).
- NOGET -- Der Wert wird nicht zurückgegeben, auch wenn das gesendete ETag nicht größer als das vorhandene ETag war.
Antwort
- Array-Antwort: Wenn das gesendete ETag größer ist als das vorhandene ETag, wird ein Array zurückgegeben, bei dem das erste Element das aktualisierte ETag und das zweite Element nil ist. Wenn das gesendete ETag kleiner oder gleich dem vorhandenen ETag ist, enthält das Antwort-Array das neueste ETag und den neuesten Wert in der Reihenfolge.
GETIFNOTMATCH
Syntax
GETIFNOTMATCH key etag
Ruft den Wert ab, wenn sich das mit dem Schlüssel verbundene ETag geändert hat; andernfalls wird eine Antwort zurückgegeben, die keine Änderung anzeigt.
Antwort
Eine der folgenden
- Array-Antwort: Wenn das ETag nicht übereinstimmt, wird ein Array mit zwei Elementen zurückgegeben. Das erste Element ist das neueste ETag und das zweite Element ist der mit dem Schlüssel verbundene Wert. Wenn das ETag übereinstimmt, sind das erste Element im Antwort-Array das ETag und das zweite Element nil.
- Nil-Antwort: Wenn der Schlüssel nicht existiert.
DELIFGREATER
Syntax
DELIFGREATER key etag
Löscht einen Schlüssel nur, wenn das angegebene ETag strikt größer ist als das vorhandene ETag für den Schlüssel.
Antwort
- Ganzzahlantwort: Gibt 1 zurück, wenn der Schlüssel erfolgreich gelöscht wurde; andernfalls gibt sie 0 zurück.
Kompatibilität und Verhalten mit Nicht-ETag-Befehlen
ETags werden derzeit nicht für Server unterstützt, die im Cluster-Modus ausgeführt werden. Dies wird bald unterstützt.
Nachfolgend finden Sie das erwartete Verhalten von mit ETag verknüpften Schlüssel-Wert-Paaren bei Verwendung von Nicht-ETag-Befehlen.
-
MSET, BITOP: Diese Befehle ersetzen ein vorhandenes, mit ETag verknüpftes Schlüssel-Wert-Paar durch ein Nicht-ETag-Schlüssel-Wert-Paar und entfernen dabei effektiv das ETag.
-
SET: Nur wenn mit der zusätzlichen Option "WITHETAG" verwendet, aktualisiert das Aufrufen von SET das ETag, während das neue Schlüssel-Wert-Paar über das vorhandene Schlüssel-Wert-Paar eingefügt wird.
-
RENAME: RENAME nimmt eine Option für WITHETAG entgegen. Wenn es MIT ETAG aufgerufen wird, benennt es den Schlüssel um, wenn der umzubenennende Schlüssel nicht existierte; andernfalls inkrementiert es das vorhandene ETag des umzubenennenden Schlüssels.
-
Benutzerdefinierte Befehle: Während ETag-basierte Schlüssel-Wert-Paare **blind innerhalb von benutzerdefinierten Transaktionen und benutzerdefinierten Prozeduren verwendet werden können**, **können ETag-basierte Schlüssel-Wert-Paare nicht innerhalb von benutzerdefinierten Rohstring-Funktionen verwendet werden**.
Alle anderen Befehle aktualisieren das ETag intern, wenn sie die zugrunde liegenden Daten ändern, und alle Antworten von ihnen geben das ETag nicht an den Client weiter. Für die Benutzer bleiben das ETag und seine Aktualisierungen bei Nicht-ETag-Befehlen verborgen.
ZEXPIRE
Syntax
ZEXPIRE key seconds [NX | XX | GT | LT] MEMBERS nummembers member [member ...]
Legt ein Timeout für eines oder mehrere Elemente eines sortierten Set-Schlüssels fest. Nach Ablauf des Timeouts werden die Elemente automatisch gelöscht. Das Timeout wird in Sekunden angegeben.
Der Befehl unterstützt mehrere Optionen, um zu steuern, wann die Ablaufzeit festgelegt werden soll
- NX: Legt den Ablauf nur für Mitglieder fest, die noch keine vorhandene Ablaufzeit haben
- XX: Legt den Ablauf nur für Mitglieder fest, die bereits eine Ablaufzeit haben
- GT: Legt den Ablauf nur fest, wenn er größer als die aktuelle Ablaufzeit ist
- LT: Legt den Ablauf nur fest, wenn er kleiner als die aktuelle Ablaufzeit ist
Die Optionen NX, XX, GT und LT sind sich gegenseitig ausschließend.
RESP-Antwort
Array-Antwort: Gibt für jedes Mitglied Folgendes zurück:
- 1, wenn das Timeout gesetzt wurde
- 0, wenn das Mitglied nicht existiert
- -1, wenn das Timeout aufgrund einer nicht erfüllten Bedingung nicht gesetzt wurde
ZEXPIREAT
Syntax
ZEXPIREAT key unix-time-seconds [NX | XX | GT | LT] MEMBERS nummembers member [member ...]
Legt eine absolute Ablaufzeit (Unix-Zeitstempel in Sekunden) für ein oder mehrere sortierte Set-Mitglieder fest. Nach Erreichen des Zeitstempels werden die Mitglieder automatisch gelöscht.
Der Befehl unterstützt mehrere Optionen, um zu steuern, wann die Ablaufzeit festgelegt werden soll
- NX: Legt den Ablauf nur für Mitglieder fest, die noch keine vorhandene Ablaufzeit haben
- XX: Legt den Ablauf nur für Mitglieder fest, die bereits eine Ablaufzeit haben
- GT: Legt den Ablauf nur fest, wenn er größer als die aktuelle Ablaufzeit ist
- LT: Legt den Ablauf nur fest, wenn er kleiner als die aktuelle Ablaufzeit ist
Die Optionen NX, XX, GT und LT sind sich gegenseitig ausschließend.
RESP-Antwort
Array-Antwort: Gibt für jedes Mitglied Folgendes zurück:
- 1, wenn das Timeout gesetzt wurde
- 0, wenn das Mitglied nicht existiert
- -1, wenn das Timeout aufgrund einer nicht erfüllten Bedingung nicht gesetzt wurde
ZPEXPIRE
Syntax
ZPEXPIRE key milliseconds [NX | XX | GT | LT] MEMBERS nummembers member [member ...]
Ähnlich wie HEXPIRE, aber das Timeout wird in Millisekunden anstelle von Sekunden angegeben.
Der Befehl unterstützt mehrere Optionen, um zu steuern, wann die Ablaufzeit festgelegt werden soll
- NX: Legt den Ablauf nur für Mitglieder fest, die noch keine vorhandene Ablaufzeit haben
- XX: Legt den Ablauf nur für Mitglieder fest, die bereits eine Ablaufzeit haben
- GT: Legt den Ablauf nur fest, wenn er größer als die aktuelle Ablaufzeit ist
- LT: Legt den Ablauf nur fest, wenn er kleiner als die aktuelle Ablaufzeit ist
Die Optionen NX, XX, GT und LT sind sich gegenseitig ausschließend.
RESP-Antwort
Array-Antwort: Gibt für jedes Mitglied Folgendes zurück:
- 1, wenn das Timeout gesetzt wurde
- 0, wenn das Mitglied nicht existiert
- -1, wenn das Timeout aufgrund einer nicht erfüllten Bedingung nicht gesetzt wurde
ZPEXPIREAT
Syntax
ZPEXPIREAT key unix-time-milliseconds [NX | XX | GT | LT] MEMBERS nummembers member [member ...]
Ähnlich wie HEXPIREAT, verwendet aber einen Unix-Zeitstempel in Millisekunden anstelle von Sekunden.
Der Befehl unterstützt mehrere Optionen, um zu steuern, wann die Ablaufzeit festgelegt werden soll
- NX: Legt den Ablauf nur für Mitglieder fest, die noch keine vorhandene Ablaufzeit haben
- XX: Legt den Ablauf nur für Mitglieder fest, die bereits eine Ablaufzeit haben
- GT: Legt den Ablauf nur fest, wenn er größer als die aktuelle Ablaufzeit ist
- LT: Legt den Ablauf nur fest, wenn er kleiner als die aktuelle Ablaufzeit ist
Die Optionen NX, XX, GT und LT sind sich gegenseitig ausschließend.
RESP-Antwort
Array-Antwort: Gibt für jedes Mitglied Folgendes zurück:
- 1, wenn das Timeout gesetzt wurde
- 0, wenn das Mitglied nicht existiert
- -1, wenn das Timeout aufgrund einer nicht erfüllten Bedingung nicht gesetzt wurde
ZTTL
Syntax
ZTTL key MEMBERS nummembers member [member ...]
Gibt die verbleibende Lebenszeit in Sekunden für ein oder mehrere sortierte Set-Mitglieder zurück, für die ein Timeout festgelegt wurde.
RESP-Antwort
Array-Antwort: Gibt für jedes Mitglied Folgendes zurück:
- TTL in Sekunden, wenn das Mitglied existiert und eine Ablaufzeit festgelegt hat
- -1, wenn das Mitglied existiert, aber keine Ablaufzeit hat
- -2, wenn das Mitglied nicht existiert
ZPTTL
Syntax
ZPTTL key MEMBERS nummembers member [member ...]
Ähnlich wie HTTL, gibt aber die verbleibende Lebenszeit in Millisekunden anstelle von Sekunden zurück.
RESP-Antwort
Array-Antwort: Gibt für jedes Mitglied Folgendes zurück:
- TTL in Millisekunden, wenn das Mitglied existiert und eine Ablaufzeit festgelegt hat
- -1, wenn das Mitglied existiert, aber keine Ablaufzeit hat
- -2, wenn das Mitglied nicht existiert
ZEXPIRETIME
Syntax
ZEXPIRETIME key MEMBERS nummembers member [member ...]
Gibt den absoluten Unix-Zeitstempel (in Sekunden) zurück, zu dem die angegebenen sortierten Set-Mitglieder ablaufen.
RESP-Antwort
Array-Antwort: Gibt für jedes Mitglied Folgendes zurück:
- Unix-Zeitstempel in Sekunden, wenn das Mitglied abläuft
- -1, wenn das Mitglied existiert, aber keine Ablaufzeit hat
- -2, wenn das Mitglied nicht existiert
ZPEXPIRETIME
Syntax
ZPEXPIRETIME key MEMBERS nummembers member [member ...]
Ähnlich wie HEXPIRETIME, gibt aber den Ablaufzeitstempel in Millisekunden anstelle von Sekunden zurück.
RESP-Antwort
Array-Antwort: Gibt für jedes Mitglied Folgendes zurück:
- Unix-Zeitstempel in Millisekunden, wenn das Mitglied abläuft
- -1, wenn das Mitglied existiert, aber keine Ablaufzeit hat
- -2, wenn das Mitglied nicht existiert
ZPERSIST
Syntax
ZPERSIST key MEMBERS nummembers member [member ...]
Entfernt den Ablauf von den angegebenen sortierten Set-Mitgliedern und macht sie persistent.
RESP-Antwort
Array-Antwort: Gibt für jedes Mitglied Folgendes zurück:
- 1, wenn das Timeout entfernt wurde
- 0, wenn das Mitglied existiert, aber kein Timeout hat
- -1, wenn das Mitglied nicht existiert
ZCOLLECT
Syntax
ZCOLLECT key [key ...]
Löst manuell die Bereinigung abgelaufener Mitglieder aus dem Speicher für einen bestimmten Hash-Set-Schlüssel aus.
Verwenden Sie * als Schlüssel, um ihn aus allen sortierten Set-Schlüsseln zu sammeln.
RESP-Antwort
Einfache Antwort: OK-Antwort Fehlerantwort: ERR ZCOLLECT-Scan bereits in Bearbeitung