Redis EXPIRE Hash Key

Redis Expire Hash Key



Redis-hashar är en speciell typ av datatyp som är mycket mer lik JSON-objektet, Java HashMap eller en Python-ordbok. Dessutom är det en samling fält-värdepar som kan användas för att modellera domänobjekt. Redis hashdatastruktur är extremt minneseffektiv där varje hashnyckel kan lagra upp till fyra miljarder fältvärdepar. Viktigast av allt är att de grundläggande hashoperationerna som HSET, HGET, HMGET, etc. arbetar med konstant tidskomplexitet.


Redis hash-nycklar har oändlig tid att leva (TTL) vilket betyder att de är beständiga de raderas explicit med hjälp av kommandon som DEL. I den här artikeln kommer vi att fokusera på att ställa in TTL för Redis-hashar med kommandot EXPIRE.







Redis EXPIRE-kommandot

EXPIRE-kommandot används för att ställa in en timeout på en given nyckel för en Redis-hash, set, lista, etc. Redis-nyckeln tas bort från databasen om timeouten löper ut. Viktigast av allt är att timeouten inte raderas tills nyckelns innehåll raderas eller skrivs över. Att ändra värdena som är associerade med en nyckel påverkar inte utgångstiden.



Syntaxen för EXPIRE-kommandot är följande:



EXPIRE-nyckel expiry_time_seconds [ NX | GX | GT | LT ]


nyckel: Nyckeln till Hash, List eller Set som du behöver för att ställa in en timeout.





expirty_time_seconds: Timeoutvärdet i sekunder.

Flera valfria argument accepteras av kommandot EXPIRE.



NX: Timeoutvärdet ställs endast in om den angivna nyckeln inte redan har något utgångsdatum.

XX: När den angivna nyckeln har ett existerande timeout-värde, ställs det nya utgångsdatumet in.

GT: Om det nya timeout-värdet är större än det befintliga ställs det nya utgången in.

LT: Det nya timeoutvärdet ställs in om det befintliga är större än det nya.

Det viktigaste är att EXPIRE-kommandot arbetar med konstant tidskomplexitet. Heltalet 1 returneras om kommandot utförs framgångsrikt. Om operationen misslyckas på grund av felaktiga argument eller icke-existerande nycklar, returneras 0.

Vi kommer att använda EXPIRE-kommandot på hash för att ställa in en utgångstid som visas i följande avsnitt:

Expire Redis Hash Använd kommandot EXPIRE

Låt oss anta att en sessionsinformation per användare lagras i en Redis-hash session:id:1000:användare:10. Vi kan använda kommandot HMSET för att skapa en Redis-hash med flera fältvärdepar enligt följande:

hmset session:id: 1000 :användare: 10 Användarnamn 'jae' kaka 'ja' Lösenord '389Ysu2'


Låt oss inspektera den skapade hashen med HGETALL-kommandot.

hgetall session:id: 1000 :användare: 10



Dessutom upphör sessionen efter 10 sekunder om användaren är inaktiv i mer än 60 sekunder. Sessionens utgång uppnås genom att ställa in utgångstiden för hashen som lagrar sessionsinformationen.

Vi kan använda kommandot EXPIRE enligt följande:

löper ut session:id: 1000 :användare: 10 10


Som nämnts är timeoutvärdet satt till 10 sekunder.


Som förväntat är returvärdet 1 vilket betyder att TTL ställs in framgångsrikt för hashen. Låt oss kontrollera tiden som är kvar innan hash-nyckeln tas bort från Redis-butiken. TTL-kommandot kan användas enligt följande:

ttl session:id: 1000 :användare: 10



Som visas i utgången är det tre sekunder kvar innan hashen tas bort automatiskt. Efter 10 sekunder är TTL-kommandot som följer:


Eftersom svaret på -2 heltal indikeras, existerar inte hashen.

Ställ in timeout baserat på förekomsten av en utgångstid

EXPIRE-kommandot accepterar NX- och XX-argument för att ställa in en ny timeout baserat på förekomsten av utgång för en specificerad hash. Låt oss skapa en ny hash med noTimeOut nyckel- .

hmset noTimeOut namn 'testa'


Låt oss försöka ställa in ett nytt utgångsdatum till den tidigare hashen. Dessutom skickar vi XX-argumentet till EXPIRE-kommandot också.

går ut noTimeOut femton XX


Eftersom vi specificerar XX alternativet i kommandot kommer utgångstiden inte att ställas in. Alternativet XX tillåter dig inte att ställa in en ny utgångstid om det inte finns någon existerande timeout kopplad till den angivna hash-nyckeln.


Om vi ​​använder NX alternativet är timeoutvärdet satt till 15.

går ut noTimeOut femton NX



EXPIRE-kommandot returnerar heltal 1-svaret vilket betyder att timeouten är korrekt inställd.

Ställ in timeout baserat på det befintliga timeoutvärdet

Alternativen GT och LT kan användas för att ställa in hashförfallotiden baserat på den befintliga timeoutlängden.

Låt oss skapa en ny hash som heter hashWithTimeout.

hmset hashWithTimeout field1 value1


Därefter ställer vi in ​​en utgångstid på 200 sekunder för hashen.

expire hashWithTimeout 200


Låt oss försöka ställa in en ny timeout på 100 sekunder för hashen tillsammans med GT-alternativet enligt följande:

expire hashWithTimeout 100 GT


Eftersom GT-alternativet har specificerats kommer EXPIRE-kommandot att kontrollera om det nya timeoutvärdet är större än det befintliga och ställa in den nya utgångstiden. I det här exemplet är den nya timeouten inte större än den befintliga timeouten. Därför kommer kommandot inte att ställa in den nya utgångstiden och 0 kommer att returneras.


Låt oss använda LT-alternativet istället för GT. Eftersom den nya utgångstiden är lägre än den nuvarande bör följande kommando ställa in den nya timeouten.

expire hashWithTimeout 100 LT


Slutsats

Kort sagt, kommandot Redis EXPIRE används för att ställa in ett TTL-värde för en given nyckel. Som standard är Redis-hash-nycklarna inte associerade med någon timeout som kallas icke-flyktig. Som diskuterats används EXPIRE-kommandot för att ställa in ett timeoutvärde på Redis-hash. Vanligtvis raderas hashen från Redis datalager efter den tid som anges som ett timeoutvärde. Som visas i exemplen accepterar EXPIRE-kommandot vissa valfria argument som XX, NX, GT och LT för att ställa in hashens utgång baserat på ett villkor.