Redis verfällt den Hash -Schlüssel

Redis verfällt den Hash -Schlüssel

Redis Hashes ist eine besondere Art von Datentyp, die dem JSON -Objekt, Java Hashmap oder einem Python -Wörterbuch viel ähnlicher ist. Darüber hinaus handelt es sich um eine Sammlung von Feldwertpaaren, mit denen Domänenobjekte modelliert werden können. Die Datenstruktur von Redis-Hash ist extrem Speicher, wenn jeder Hash-Schlüssel bis zu vier Milliarden Feldwertpaare speichern kann. Am wichtigsten ist, dass die grundlegenden Hash -Operationen wie Hset, HGet, HMGet usw. mit konstanter Zeitkomplexität arbeiten.


Redis -Hash -Schlüsseln haben unendliche Zeit zum Leben (TTL), was bedeutet, dass sie hartnäckig sind, dass sie explizit mit Befehlen wie Del gelöscht werden. In diesem Artikel konzentrieren wir uns darauf, die TTL für Redis -Hashes mithilfe des Befehls von Ablauf festzulegen.

Redis abläuft den Befehl ab

Mit dem Befehl Ablauf wird ein Timeout auf einem bestimmten Schlüssel eines Redis -Hashs, der Set, der Liste usw. festgelegt. Der Redis -Schlüssel wird aus der Datenbank gelöscht, wenn die Zeitüberschreitung abläuft. Am wichtigsten ist, dass die Zeitüberschreitung nicht erfüllt ist, bis der Inhalt des Schlüssels gelöscht oder überschrieben wird. Das Ändern der mit einem Schlüssel verbundenen Werte wirkt sich nicht auf die Ablaufzeit aus.

Die Syntax des Ablaufsbefehls lautet wie folgt:

Ablauf der Key expiry_time_seconds [nx | Gx | Gt | Lt]


Taste: Der Schlüssel des Hashs, der Liste oder des Setzens, die Sie für eine Zeitüberschreitung festlegen müssen.

Exsicly_Time_Seconds: Der Zeitübergangswert in Sekunden.

Mehrere optionale Argumente werden durch den Befehl Ablauf akzeptiert.

NX: Der Zeitlimitwert wird nur festgelegt, wenn der angegebene Schlüssel bereits keine Ablauf hat.

Xx: Wenn der angegebene Schlüssel einen vorhandenen Zeitlimitwert hat, wird die neue Ablauf festgelegt.

GT: Wenn der neue Zeitlimitwert größer als der vorhanden ist, wird die neue Ablauf festgelegt.

LT: Der neue Zeitlimitwert wird festgelegt, wenn der vorhandene größer ist als der neue.

Am wichtigsten ist, dass der Ablaufbefehl mit konstanter Zeitkomplexität arbeitet. Die Ganzzahl 1 wird zurückgegeben, wenn die Befehlsausführung erfolgreich ist. Wenn die Operation aufgrund falscher Argumente oder nicht existierender Schlüssel fehlschlägt, wird 0 zurückgegeben.

Wir werden den Befehl ab Ablauf auf Hashes verwenden, um eine Ablaufzeit festzulegen, wie im folgenden Abschnitt gezeigt:

Ablauf von Redis Hash mit dem Befehl Ablauf von Ablauf

Nehmen wir an, dass eine Sitzungsinformation pro Benutzer in einem Redis -Hash gespeichert ist Sitzung: ID: 1000: Benutzer: 10. Wir können den Befehl HMSET verwenden, um einen Redis-Hash mit mehreren Feldwertpaaren wie folgt zu erstellen:

HMSET -Sitzung: ID: 1000: Benutzer: 10 Benutzername "Jae" Cookie "Ja" Passwort "389ysu2"


Überprüfen wir den erstellten Hash mit dem Befehl hGetall.

HGetall Sitzung: ID: 1000: Benutzer: 10



Zusätzlich läuft die Sitzung nach 10 Sekunden ab, wenn der Benutzer länger als 60 Sekunden lang im Leerlauf ist. Der Ablauf der Sitzung wird erreicht, indem die Ablaufzeit für den Hash festgelegt wird, der die Sitzungsinformationen speichert.

Wir können den Kommando von Ablauf wie folgt verwenden:

Ablauf Sitzung: ID: 1000: Benutzer: 10 10


Wie bereits erwähnt, wird der Zeitüberschreitungswert auf 10 Sekunden eingestellt.


Wie erwartet ist der Rückgabewert 1, was bedeutet, dass der TTL erfolgreich für den Hash festgelegt wird. Lassen Sie uns die Zeit überprüfen, bevor der Hash -Taste aus dem Redis Store entfernt wird. Der TTL -Befehl kann wie folgt verwendet werden:

TTL Sitzung: ID: 1000: Benutzer: 10



Wie im Ausgang gezeigt, bleiben drei Sekunden vor dem automatischen Entfernen des Hashs. Nach 10 Sekunden ist die TTL -Befehlsausgabe wie folgt:


Wie die Antwort -2 -Ganzzahl angezeigt ist, existiert der Hash nicht.

Stellen Sie das Timeout basierend auf der Existenz einer Ablaufzeit fest

Der Kommando von Ablauf akzeptiert NX- und XX -Argumente, um ein neues Zeitlimit auf der Grundlage des Existenz von Ablauf für einen bestimmten Hash festzulegen. Lassen Sie uns einen neuen Hash mit dem erstellen Notimeout Taste.

HMSET -Begriff "Test"


Versuchen wir, dem vorherigen Hash einen neuen Ablauf zu setzen. Zusätzlich übergeben wir das XX -Argument auch an den Ablaufbefehl.

Ablauf des Notimeout 15 xx


Da geben wir die an Xx Option Im Befehl wird die Ablaufzeit nicht festgelegt. Mit der XX -Option können Sie nicht eine neue Ablaufzeit festlegen, wenn der angegebene Hash -Schlüssel kein vorhandener Zeitübergang zugeordnet ist.


Wenn wir das verwenden NX Option, der Zeitüberschreitungswert wird auf 15 gesetzt.

Ablauf des Notimeout 15 NX



Der Befehl aus Ablauf gibt die Ganzzahl 1 -Antwort zurück, was bedeutet, dass die Zeitüberschreitung ordnungsgemäß festgelegt wird.

Stellen Sie das Timeout basierend auf dem vorhandenen Zeitlimitwert fest

Die GT- und LT -Optionen können verwendet werden, um die Hash -Ablaufzeit basierend auf der vorhandenen Zeitüberschreitungslänge festzulegen.

Lassen Sie uns einen neuen Hash namens erstellen Hashwithtimeout.

HMSET HashwithTimeout Field1 Value1


Als nächstes haben wir eine Ablaufzeit von 200 Sekunden für den Hash festgelegt.

HashwithTimeout 200 ablehnen


Versuchen wir, für den Hash eine neue Zeitüberschreitung von 100 Sekunden zusammen mit der GT -Option wie folgt festzulegen:

verfallen


Da die GT -Option angegeben wurde, prüft der Befehl aus Ablauf, ob der neue Zeitlimitwert größer ist als der vorhandene und die neue Ablaufzeit festlegt. In diesem Beispiel ist die neue Zeitüberschreitung nicht größer als die vorhandene Zeitüberschreitung. Daher setzt der Befehl die neue Ablaufzeit nicht und 0 wird zurückgegeben.


Verwenden wir die LT -Option anstelle von GT. Da die neue Ablaufzeit niedriger als der aktuelle ist, sollte der folgende Befehl das neue Timeout erfolgreich festlegen.

verfallen


Abschluss

Kurz gesagt, der Befehl Redis -Ablauf wird verwendet, um einen TTL -Wert für einen bestimmten Schlüssel festzulegen. Standardmäßig sind die Redis-Hash-Tasten mit keinem Timeout verbunden, der als nichtflüchtig bezeichnet wird. Wie erläutert, wird der Befehl aus Ablauf verwendet, um einen Zeitüberschreitungswert auf den Redis -Hash festzulegen. Normalerweise wird der Hash nach der Zeitspanne aus dem Redis -Datenspeicher gelöscht. Wie in den Beispielen gezeigt, akzeptiert der Befehl Ablauf einige optionale Argumente wie XX, NX, GT und LT, um die Hash -Ablauf basierend auf einer Bedingung festzulegen.