Zum Hauptinhalt springen

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