Redis GETEX

Redis Getex



Redis ist ein Schlüssel-Wert-Datenspeicher, der als In-Memory-Cache, Datenbank, Zeitreihen, Stream-Engine, Nachrichtenbroker usw. verwendet wird. Da der Redis-Datenspeicher ein einfaches Schlüssel-Wert-Paar-Format zum Speichern von Daten verwendet, ist er sehr speicherfähig effizient. Außerdem ist die Abfragegeschwindigkeit sehr hoch bei geringer Zeitkomplexität wie O(1) und O(log(N)). Redis-Schlüssel können verschiedene Datenstrukturen enthalten, z. B. Zeichenfolgen, Sätze, Hashes, sortierte Sätze und Listen.

Normalerweise werden die Befehle GET und SET zum Speichern und Abrufen von Zeichenfolgenwerten verwendet, die unter einem bestimmten Redis-Schlüssel gespeichert sind. Diese beiden Befehle arbeiten mit konstanter Zeitkomplexität.







Außerdem ist der GETEX-Befehl verfügbar, um Zeichenfolgenwerte zu lesen, die unter einem bestimmten Schlüssel gespeichert sind. Aber dieser Befehl ist auch mit einer parallelen Schreiboperation verbunden. Dieser Leitfaden konzentriert sich auf die GETEX-Befehlssyntax, ihre Optionen und Anwendungsfälle.



TTL eines Redis-Schlüssels

Der Time-to-Live(TTL)-Wert ist die Ablaufzeit eines bestimmten Datenstücks. Normalerweise kann eine TTL Datenbankzeilen zugeordnet werden. Ein Timeout kann auch mit Redis-Schlüsseln eingestellt werden. So kann ein Redis-Client die verbleibenden Sekunden prüfen, in denen ein bestimmter Schlüssel im Datenspeicher verfügbar ist. Redis bietet einen TTL-Befehl, um den Time-to-Live-Wert eines bestimmten Schlüssels zu überprüfen. Wenn einer angegebenen Taste kein Timeout zugeordnet ist, gibt der TTL-Befehl -1 zurück. Wir werden den TTL-Befehl in den nächsten Abschnitten verwenden, um die verbleibende Zeit einer bestimmten Taste zu überprüfen.



Der GETEX-Befehl

Wie hervorgehoben, ist der GETEX-Befehl dem GET-Befehl ähnlicher, außer dass er verwendet werden kann, um eine Ablaufzeit für den angegebenen Schlüssel festzulegen. Darüber hinaus kann eine Befehlsoption einen Zeitüberschreitungswert von einem bestimmten Schlüssel entfernen. Die Syntax des GETEX-Befehls lautet wie folgt:





GETEX-Schlüssel [ EX-Timeout_in_Sekunden | PX-Timeout_in_Millisekunden | EXAT timeout_in_unix-time-seconds | PXAT-Timeout_in_Unix-Zeit-Millisekunden | FORTDAUERN ]

Schlüssel: Dies ist der Schlüssel, der auf einen Zeichenfolgenwert zeigt.

Die folgenden optionalen Argumente können verwendet werden, um ein Timeout in Sekunden oder Millisekunden festzulegen.



EX: Dadurch wird die Ablaufzeit in Sekunden für einen bestimmten Schlüssel festgelegt.

PX: Der Schlüssel-Timeout-Wert wird in Millisekunden festgelegt.

Darüber hinaus können wir mit den folgenden Befehlsoptionen einen UNIX-Zeitstempelwert in Sekunden oder Millisekunden angeben EXAT und PXAT :

ZUSATZ: Die Ablaufzeit wird im UNIX-Zeitstempelformat festgelegt, und der Zeitstempel wird in Sekunden angegeben.

PXAT: Das Timeout für einen bestimmten Redis-Schlüssel wird als UNIX-Zeitstempel in Millisekunden festgelegt.

FORTDAUERN: Indem Sie dies angeben, können Sie den Time-to-Live-Wert entfernen, der einem bestimmten Schlüssel zugeordnet ist.

Der GETEX-Befehl gibt den Wert des angegebenen Schlüssels zurück. Dieser Befehl funktioniert nur mit Zeichenfolgenwerten, jedoch nicht mit Hashes, Listen, sortierten Mengen usw. Wenn Sie einen Schlüssel angeben, der einem Nicht-Zeichenfolgenwert zugeordnet ist, gibt der Befehl einen Fehler zurück. Wenn der Schlüssel bereits abgelaufen oder nicht vorhanden ist, wird der Befehl außerdem zurückgegeben Null.

Im folgenden Abschnitt behandeln wir die praktische Verwendung des GETEX-Befehls.

Anwendungsfall – Temporärer Reset-Link oder PIN-Code-Generierung für Passwortwiederherstellung/OTPs

Ein Webhosting-Unternehmen stellt registrierten Benutzern eine Passwortwiederherstellungsfunktion zur Verfügung. Als Sicherheitsmaßnahme senden sie einen neuen URL-Link an den Benutzer, der innerhalb von 5 Minuten abläuft. Das Unternehmen verwendet den Redis-Datenspeicher seit langem und verwendet den GETEX-Befehl, um einen Time-to-Live-Wert für einen bestimmten Benutzer festzulegen.

Nehmen wir an, dass ein Benutzer mit der Benutzer-ID 1000 eine Passwortwiederherstellung anfordert. Die Wiederherstellungs-URL kann also auf dem Schlüssel gespeichert werden Wiederherstellungs-URL: Benutzer-ID: 1000 . Wir können den SET-Befehl verwenden, um die Wiederherstellungs-URL wie folgt zu speichern:

einstellen Wiederherstellungs-URL: Benutzer-ID: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

Lassen Sie uns überprüfen, ob die Zeichenfolge URL ordnungsgemäß am Schlüssel gespeichert ist Wiederherstellungs-URL: Benutzer-ID: 1000. Wir können den GETEX-Befehl wie folgt verwenden:

getex Wiederherstellungs-URL: Benutzer-ID: 1000

Die Ausgabe des vorherigen Befehls wird im Folgenden gezeigt:

Wenn wir den GET-Befehl anstelle des GETEX-Befehls verwendet haben, ist die Ausgabe dieselbe.

Lassen Sie uns den TTL-Befehl verwenden, um zu überprüfen, ob dieser Taste eine Ablaufzeit zugeordnet ist.

TTL-Wiederherstellungs-URL: Benutzer-ID: 1000

Wie erwartet wurde die -1 vom TTL-Befehl zurückgegeben, was bedeutet, dass dem angegebenen Schlüssel keine Ablaufzeit zugeordnet ist.

Gemäß diesem Beispiel muss das Hosting-Unternehmen ein Zeitlimit von 5 Minuten für die Wiederherstellungs-URL festlegen. Also werden wir die verwenden EX Befehlsoption. Da 5 Minuten 300 Sekunden sind, können wir den GETEX-Befehl wie folgt konstruieren:

getex Wiederherstellungs-URL: Benutzer-ID: 1000 EX 500

Lassen Sie uns den TTL-Befehl einige Male ausführen, um die verbleibende Zeit zu überprüfen, die der Schlüssel im Datenspeicher vorhanden ist.

Wie erwartet, die Zeit nimmt ab, und schließlich, die Wiederherstellungs-URL: Benutzer-ID: 1000 Schlüssel wird entfernt. Folgendes ist die Ausgabe nach 5 Minuten:

Die -2 wurde vom Befehl zurückgegeben, was bedeutet, dass der Schlüssel abgelaufen ist und aus dem Datenspeicher gelöscht wurde.

Manchmal müssen Sie möglicherweise den Zeitüberschreitungswert entfernen, der einem bestimmten Schlüssel zugeordnet ist. Daher kann die Befehlsoption PERSIST verwendet werden, um einen TTL-Wert zu löschen, der sich auf einen bestimmten Schlüssel bezieht.

Lassen Sie uns einen weiteren Beispielschlüssel erstellen und ihm einen Zeichenfolgenwert zuweisen. In diesem Fall geben wir den TTL-Wert in Millisekunden an, indem wir die übergeben PX Möglichkeit.

einstellen KeytoTestPersist 'Dies läuft innerhalb von 60 Sekunden ab' PX 50000

Als nächstes werden wir die verbleibende Zeit wie folgt überprüfen:

Wie erwartet nimmt die TTL ab. Rufen wir den GETEX-Befehl mit der Option PERSIST wie folgt auf:

getex KeytoTestPersist bestehen bleiben

Idealerweise würde dies die diesem Schlüssel zugeordnete TTL entfernen. Lassen Sie uns die TTL auf den Schlüssel untersuchen KeytoTestPersist.

Der TTL-Befehl hat die -1 zurückgegeben, was bedeutet, dass der Taste keine TTL zugeordnet ist KeytoTestPersist.

Ebenso die GETEX Befehl kann verwendet werden, um die Ablaufzeit für Schlüssel im UNIX-Zeitstempel festzulegen.

Fazit

Zusammenfassend lässt sich sagen, dass der Redis GETEX-Befehl verwendet werden kann, um die unter einem bestimmten Schlüssel gespeicherten Zeichenfolgenwerte abzurufen, wie es der GET-Befehl tut. Der einzige Unterschied zum GETEX-Befehl besteht darin, dass er das Festlegen und Entfernen von Ablaufzeiten für einen bestimmten Schlüssel unterstützt. Es unterstützt mehrere optionale Argumente, um die Ablaufzeit in Sekunden, Millisekunden und UNIX-Zeitstempel-Sekunden oder -Millisekunden anzugeben. Wie bereits erwähnt, bietet der Befehl die Option PERSIST, um die zugehörige TTL für einen bestimmten Schlüssel zu entfernen. Insgesamt arbeitet der GETEX-Befehl mit konstanter Zeitkomplexität.