Normalerweise werden die Befehle von GET & SET zum Speichern und Abrufen von String-Typ-Werten verwendet, die in einer bestimmten Redis-Taste gespeichert sind. Diese beiden Befehle arbeiten mit konstanter Zeitkomplexität.
Darüber hinaus steht der Befehl getex zur Verfügung, um Zeichenfolgenwerte zu lesen, die in einem bestimmten Schlüssel gespeichert sind. Dieser Befehl ist jedoch auch einer parallele Schreiboperation verbunden. Dieser Leitfaden konzentriert sich auf die GetEx -Befehlssyntax, seine Optionen und Anwendungsfälle.
TTL eines Redis -Schlüssels
Die Zeit zum Live -Wert (TTL) ist die Ablaufzeit eines bestimmten Datenstücks. Normalerweise kann ein TTL mit Datenbankzeilen zugeordnet werden. Ein Zeitlimit kann auch mit Redisschlüssel eingestellt werden. Ein Redis -Client kann also die verbleibenden Sekunden überprüfen, die ein bestimmter Schlüssel im Datenspeicher verfügbar ist. Redis bietet einen TTL -Befehl an, um die Zeit bis zum Live -Wert eines bestimmten Schlüssels zu überprüfen. Wenn mit einem angegebenen Schlüssel keine Zeitüberschreitung zugeordnet ist, gibt der TTL -Befehl -1 zurück. Wir werden den Befehl TTL in den nächsten Abschnitten verwenden, um die verbleibende Zeit eines bestimmten Schlüssels zu überprüfen.
Der Befehl getex
Wie hervorgehoben, ist der Befehl getex ähnlicher dem Befehl GET, mit der Ausnahme, dass er eine Ablaufzeit für den angegebenen Schlüssel festlegen kann. Darüber hinaus kann eine Befehlsoption einen Zeitüberschreitungswert von einem bestimmten Schlüssel entfernen. Die GetEx -Befehlssyntax lautet wie folgt:
Getex key [ex timeout_in_seconds | Px timeout_in_milliseconds | Exat Timeout_in_unix-Zeit-Sekunden | Pxat timeout_in_unix-Zeit-Millisekunden | FORTDAUERN]
Taste: Dies ist der Schlüssel, der auf einen Stringwert hinweist.
Die folgenden optionalen Argumente können verwendet werden, um eine Zeitüberschreitung in Sekunden oder Millisekunden festzulegen.
EX: Dadurch wird die Ablaufzeit für einen bestimmten Schlüssel in Sekunden festgelegt.
PX: Der wichtigste Zeitübergangswert wird in Millisekunden festgelegt.
Darüber hinaus können wir einen Unix -Zeitstempelwert in Sekunden oder Millisekunden angeben, indem wir die folgenden Befehlsoptionen verwenden Exat Und Pxat:
Exat: Die Ablaufzeit wird im UNIX -Zeitstempelformat festgelegt, und der Zeitstempel wird in Sekunden angezeigt.
Pxat: Die Zeitüberschreitung für einen bestimmten Redis -Schlüssel wird als Unix -Zeitstempel in Millisekunden festgelegt.
FORTDAUERN: Wenn Sie dies angeben, können Sie die Zeit zum Live -Wert entfernen, die einem bestimmten Schlüssel zugeordnet sind.
Der Befehl getEx gibt den Wert des angegebenen Schlüssels zurück. Dieser Befehl funktioniert nur mit Werten vom Typ String, aber nicht mit Hashes, Listen, sortierten Sätzen usw. Wenn Sie einen Schlüssel angeben, der einem Nicht-String-Wert zugeordnet ist, gibt der Befehl einen Fehler zurück. Wenn der Schlüssel bereits abgelaufen ist oder nicht existiert, wird der Befehl zurückgegeben Null.
Im folgenden Abschnitt werden wir die praktische Verwendung des GetEx -Befehls abdecken.
Anwendungsfall - Temporary Reset Link oder Pin -Code -Erzeugung für Kennwortwiederherstellung/OTPs
Ein Webhosting -Unternehmen bietet eine Funktion für die Wiederherstellung von Kennwortwiederherstellungen für registrierte Benutzer an. Als Sicherheitsmaßnahme senden sie einen neuen URL -Link an den Benutzer, der innerhalb von 5 Minuten abläuft. Das Unternehmen nutzt den Redis -Datenspeicher schon lange und verwendet den Befehl getEx, um eine Zeit bis zum Live -Wert für einen bestimmten Benutzer festzulegen.
Nehmen wir an, dass ein Benutzer mit user_id 1000 eine Passwortwiederherstellung anfordert. Die Wiederherstellungs -URL kann also im Schlüssel gespeichert werden RecoveryURL: UserId: 1000. Wir können den Befehl SET verwenden, um die Wiederherstellungs -URL wie folgt zu speichern:
Set RecoveryURL: UserID: 1000 "https: // abc.Com/Recovery/Userid = 1000, Key = SDFIUOE3290E9RJS "
Lassen Sie uns überprüfen, ob die String -URL ordnungsgemäß im Schlüssel gespeichert ist RecoveryURL: UserId: 1000. Wir können den Befehl getex wie folgt verwenden:
getex RecoveryURL: UserID: 1000
Die Ausgabe des vorherigen Befehls ist im Folgenden dargestellt:
Wenn wir den Befehl GET anstelle des Befehls getex verwendet haben, ist die Ausgabe derselbe.
Verwenden wir den Befehl TTL, um zu überprüfen, ob eine Ablaufzeit mit diesem Schlüssel zugeordnet ist.
TTL RecoveryURL: UserID: 1000
Wie erwartet wurde der -1 vom TTL -Befehl zurückgegeben, was bedeutet, dass mit dem angegebenen Schlüssel keine Ablaufzeit zugeordnet ist.
Nach diesem Beispiel muss das Hosting -Unternehmen eine Zeitüberschreitung von 5 Minuten für die Wiederherstellungs -URL festlegen. Also werden wir die verwenden EX Befehlsoption. Da 5 Minuten 300 Sekunden beträgt, können wir den Befehl getex wie folgt konstruieren:
getex RecoveryURL: UserID: 1000 Ex 500
Lassen Sie uns den TTL -Befehl ein paar Mal ausführen, um die verbleibende Zeit zu überprüfen, die der Schlüssel im Datenspeicher vorliegt.
Wie erwartet nimmt die Zeit ab und schließlich die RecoveryURL: UserId: 1000 Der Schlüssel wird entfernt. Das Folgende ist die Ausgabe nach 5 Minuten:
Der -2 wurde vom Befehl zurückgegeben, was bedeutet, dass der Schlüssel abgelaufen und aus dem Datenspeicher gelöscht wird.
Manchmal müssen Sie möglicherweise den Zeitüberschreitungswert entfernen, der einem bestimmten Schlüssel zugeordnet ist. Die Befehlsoption persist kann daher verwendet werden, um einen TTL -Wert zu löschen, der sich auf einen angegebenen Schlüssel bezieht.
Erstellen wir einen anderen Beispielschlüssel und weisen Sie ihm einen String -Wert zu. In diesem Fall werden wir den TTL -Wert in Millisekunden angeben, indem wir das verabschieden Px Möglichkeit.
Setzen Sie KeyTotestpersist "Dies wird innerhalb von 60 Sekunden abgelaufen" PX 50000
Als nächstes werden wir die verbleibende Zeit wie folgt überprüfen:
Wie erwartet nimmt die TTL ab. Rufen Sie den Befehl getex mit der persistischen Option wie folgt an:
Getex KeyTotestPersist Persist
Im Idealfall würde dies die mit diesem Schlüssel zugeordnete TTL entfernen. Lassen Sie uns die TTL auf den Schlüssel untersuchen KeyTotestPersist.
Der Befehl TTL hat den -1 zurückgegeben, was bedeutet, dass dem Schlüssel kein TTL zugeordnet ist KeyTotestPersist.
Ebenso die Getex Der Befehl kann verwendet werden, um die Ablaufzeit für Schlüssel im Unix -Zeitstempel festzulegen.
Abschluss
Zusammenfassend kann der Befehl entrETIS getEx verwendet werden, um die in einem bestimmten Schlüssel gespeicherten Zeichenfolgewerte abzurufen. Der einzige Unterschied zum Befehl getex besteht darin, dass er die Einstellung und Entfernung von Ablaufzeiten für einen bestimmten Schlüssel unterstützt. Es unterstützt mehrere optionale Argumente, um die Ablaufzeit in Sekunden, Millisekunden und Unix-Timestamp-Sekunden oder Millisekunden anzugeben. Wie erläutert, bietet der Befehl die beständige Option, die zugehörige TTL für einen bestimmten Schlüssel zu entfernen. Insgesamt arbeitet der Befehl getex mit konstanter Zeitkomplexität.