Redis EXPIRE Hash-sleutel

Redis Expire Hash Sleutel



Redis-hashes zijn een speciaal soort gegevenstype dat veel meer lijkt op het JSON-object, Java HashMap of een Python-woordenboek. Verder is het een verzameling veldwaardeparen die kunnen worden gebruikt om domeinobjecten te modelleren. Redis hash-gegevensstructuur is extreem geheugenefficiënt, waarbij elke hash-sleutel tot vier miljard veldwaardeparen kan opslaan. Het belangrijkste is dat de fundamentele hash-bewerkingen zoals HSET, HGET, HMGET, etc. werken op constante tijdcomplexiteit.


Redis hash-sleutels hebben oneindige tijd om te leven (TTL), wat betekent dat ze persistent zijn en expliciet worden verwijderd met behulp van opdrachten zoals DEL. In dit artikel zullen we ons concentreren op het instellen van de TTL voor Redis-hashes met behulp van het EXPIRE-commando.







Redis EXPIRE-opdracht

Het EXPIRE-commando wordt gebruikt om een ​​time-out in te stellen voor een bepaalde sleutel van een Redis-hash, set, lijst, enz. De Redis-sleutel wordt uit de database verwijderd als de time-out verloopt. Het belangrijkste is dat de time-out wordt gewist totdat de inhoud van de sleutel is verwijderd of overschreven. Het wijzigen van de waarden die aan een sleutel zijn gekoppeld, heeft geen invloed op de vervaltijd.



De syntaxis van het EXPIRE-commando is als volgt:



EXPIRE sleutel expiratie_time_seconds [ NX | GX | GT | LT ]


sleutel: De sleutel van de hash, lijst of set die u nodig hebt om een ​​time-out in te stellen.





expirty_time_seconds: De time-outwaarde in seconden.

Verschillende optionele argumenten worden geaccepteerd door het EXPIRE-commando.



NX: De time-outwaarde wordt alleen ingesteld als de opgegeven sleutel nog niet is verlopen.

XX: Wanneer de opgegeven sleutel een bestaande time-outwaarde heeft, wordt de nieuwe vervaldatum ingesteld.

GT: Als de nieuwe time-outwaarde groter is dan de bestaande, wordt de nieuwe vervaldatum ingesteld.

LT: De nieuwe time-outwaarde wordt ingesteld als de bestaande groter is dan de nieuwe.

Het belangrijkste is dat het EXPIRE-commando werkt op constante tijdcomplexiteit. Het gehele getal 1 wordt geretourneerd als de uitvoering van de opdracht is geslaagd. Als de bewerking mislukt vanwege verkeerde argumenten of niet-bestaande sleutels, wordt 0 geretourneerd.

We zullen het EXPIRE-commando voor hashes gebruiken om een ​​vervaltijd in te stellen, zoals weergegeven in de volgende sectie:

Verlopen Redis-hash met het EXPIRE-commando

Laten we aannemen dat sessie-informatie per gebruiker wordt opgeslagen in een Redis-hash sessie:id:1000:gebruiker:10. We kunnen de opdracht HMSET gebruiken om als volgt een Redis-hash met meerdere veldwaardeparen te maken:

hmset-sessie:id: 1000 :gebruiker: 10 gebruikersnaam 'jaa' koekje 'ja' wachtwoord '389Ysu2'


Laten we de gemaakte hash inspecteren met behulp van de opdracht HGETALL.

hgetall sessie:id: 1000 :gebruiker: 10



Bovendien verloopt de sessie na 10 seconden als de gebruiker langer dan 60 seconden niet actief is. Sessieverloop wordt bereikt door de vervaltijd in te stellen voor de hash die de sessie-informatie opslaat.

We kunnen het EXPIRE-commando als volgt gebruiken:

verlopen sessie:id: 1000 :gebruiker: 10 10


Zoals vermeld, is de time-outwaarde ingesteld op 10 seconden.


Zoals verwacht is de retourwaarde 1, wat betekent dat de TTL met succes is ingesteld voor de hash. Laten we de resterende tijd controleren voordat de hash-sleutel uit de Redis-winkel wordt verwijderd. Het TTL-commando kan als volgt worden gebruikt:

ttl sessie:id: 1000 :gebruiker: 10



Zoals te zien is in de uitvoer, zijn er nog drie seconden voordat de hash automatisch wordt verwijderd. Na 10 seconden is de uitvoer van het TTL-commando als volgt:


Aangezien het -2 integer antwoord wordt aangegeven, bestaat de hash niet.

Time-out instellen op basis van het bestaan ​​van een vervaltijd

Het EXPIRE-commando accepteert NX- en XX-argumenten om een ​​nieuwe time-out in te stellen op basis van het bestaan ​​van een vervaldatum voor een gespecificeerde hash. Laten we een nieuwe hash maken met de noTimeOut sleutel .

hmset noTimeOut naam 'testen'


Laten we proberen een nieuwe vervaldatum in te stellen op de vorige hash. Bovendien geven we het XX-argument ook door aan het EXPIRE-commando.

verlopen noTimeOut vijftien XX


Aangezien we de . specificeren XX optie in de opdracht, wordt de vervaltijd niet ingesteld. Met de optie XX kunt u geen nieuwe vervaltijd instellen als er geen bestaande time-out is gekoppeld aan de opgegeven hash-sleutel.


Als we de gebruiken NX optie, wordt de time-outwaarde ingesteld op 15.

verlopen noTimeOut vijftien NX



Het EXPIRE-commando retourneert het gehele getal 1 als antwoord, wat betekent dat de time-out correct is ingesteld.

Time-out instellen op basis van de bestaande time-outwaarde

De GT- en LT-opties kunnen worden gebruikt om de vervaltijd van de hash in te stellen op basis van de bestaande time-outduur.

Laten we een nieuwe hash maken met de naam hashMetTimeout.

hmset hashWithTimeout veld1 waarde1


Vervolgens stellen we een vervaltijd van 200 seconden in voor de hash.

hash verlopenMetTimeout 200


Laten we proberen een nieuwe time-out van 100 seconden in te stellen voor de hash samen met de GT-optie als volgt:

hash verlopenMetTimeout 100 GT


Aangezien de GT-optie is gespecificeerd, zal het EXPIRE-commando controleren of de nieuwe time-outwaarde groter is dan de bestaande en de nieuwe vervaltijd instellen. In dit voorbeeld is de nieuwe time-out niet groter dan de bestaande time-out. Daarom stelt de opdracht de nieuwe vervaltijd niet in en wordt 0 geretourneerd.


Laten we de LT-optie gebruiken in plaats van GT. Aangezien de nieuwe vervaltijd lager is dan de huidige, zou de volgende opdracht de nieuwe time-out met succes moeten instellen.

hash verlopenMetTimeout 100 LT


Conclusie

Kortom, het Redis EXPIRE-commando wordt gebruikt om een ​​TTL-waarde voor een bepaalde sleutel in te stellen. Standaard zijn de Redis-hashsleutels niet gekoppeld aan een time-out die niet-vluchtig wordt genoemd. Zoals besproken, wordt het EXPIRE-commando gebruikt om een ​​time-outwaarde in te stellen op de Redis-hash. Gewoonlijk wordt de hash verwijderd uit het Redis-gegevensarchief na de tijd die is opgegeven als time-outwaarde. Zoals in de voorbeelden wordt getoond, accepteert het EXPIRE-commando enkele optionele argumenten zoals XX, NX, GT en LT om de hash-verloop in te stellen op basis van een voorwaarde.