Redis scade la chiave hash

Redis scade la chiave hash

Gli hash Redis sono un tipo speciale di tipo di dati che è molto più simile all'oggetto JSON, Java Hashmap o un dizionario Python. Inoltre, è una raccolta di coppie di valore sul campo che possono essere utilizzate per modellare gli oggetti di dominio. La struttura dei dati hash di Redis è estremamente efficiente dalla memoria in cui ogni chiave hash può archiviare fino a quattro miliardi di coppie di valore di campo. Ancora più importante, le operazioni di hash fondamentali come HSET, HGET, HMGET, ecc. operare in costante complessità del tempo.


Le chiavi hash Redis hanno un tempo infinito per vivere (TTL), il che significa che sono persistenti che vengono eliminate esplicitamente usando comandi come Del. In questo articolo, ci concentreremo sull'impostazione del TTL per gli hash di Redis usando il comando scadente.

Redis scade il comando

Il comando scaduto viene utilizzato per impostare un timeout su una determinata chiave di un hash, set, elenco, ecc. La chiave Redis viene eliminata dal database se il timeout scade. Ancora più importante, il timeout non è chiaro fino a quando il contenuto della chiave non viene eliminato o sovrascritto. La modifica dei valori associati a una chiave non influisce sul tempo di scadenza.

La sintassi del comando scadente è la seguente:

Scadenza chiave scadenza_time_seconds [nx | Gx | GT | LT]


chiave: La chiave dell'hash, dell'elenco o del set di cui è necessario impostare un timeout.

ESpirty_time_seconds: Il valore del timeout in secondi.

Diversi argomenti opzionali sono accettati dal comando scadente.

NX: Il valore di timeout è impostato solo se la chiave specificata non ha già scadenza.

Xx: Quando la chiave specificata ha un valore di timeout esistente, è impostata la nuova scadenza.

GT: Se il nuovo valore di timeout è maggiore di quello esistente, è impostata la nuova scadenza.

LT: Il nuovo valore di timeout è impostato se quello esistente è maggiore di quello nuovo.

Ancora più importante, il comando scadente opera con una complessità temporale costante. L'INTEGER 1 viene restituito se l'esecuzione del comando ha esito positivo. Se l'operazione fallisce a causa di argomenti errati o chiavi inesistenti, 0 viene restituito.

Utilizzeremo il comando scadente sugli hash per impostare un tempo di scadenza come mostrato nella sezione seguente:

Scadenza redis hash usando il comando scadenza

Supponiamo che le informazioni di una sessione per utente siano archiviate in un hash Redis Sessione: ID: 1000: Utente: 10. Possiamo usare il comando HMSET per creare un hash Redis con più coppie di valori di campo come segue:

Sessione HMSET: ID: 1000: Utente: 10 Nome utente "Jae" Cookie "Sì" Password "389YSU2"


Ispezioniamo l'hash creato usando il comando hgetall.

Hgetall Session: ID: 1000: Utente: 10



Inoltre, la sessione scade dopo 10 secondi se l'utente è inattivo per più di 60 secondi. La scadenza della sessione si ottiene impostando il tempo di scadenza per l'hash che memorizza le informazioni sulla sessione.

Possiamo usare il comando scadente come segue:

Scadenza Sessione: ID: 1000: Utente: 10 10


Come accennato, il valore di timeout è impostato su 10 secondi.


Come previsto, il valore di reso è 1, il che significa che il TTL è impostato correttamente per l'hash. Controlliamo l'ora lasciata prima che la chiave hash venga rimossa dal Redis Store. Il comando TTL può essere usato come segue:

TTL Session: ID: 1000: Utente: 10



Come mostrato nell'uscita, vengono lasciati tre secondi prima di rimuovere automaticamente l'hash. Dopo 10 secondi, l'output del comando TTL è il seguente:


Poiché viene indicata la risposta intera -2, l'hash non esiste.

Imposta il timeout in base all'esistenza di un tempo di scadenza

Il comando scadente accetta argomenti NX e XX per impostare un nuovo timeout in base all'esistenza di scadenza per un hash specificato. Creiamo un nuovo hash con il notimeout chiave.

Nome HMSET Nitimeout "Test"


Proviamo a impostare una nuova scadenza nell'hash precedente. Inoltre, passiamo anche l'argomento XX al comando di scadenza.

scadere notimeout 15 xx


Dal momento che specifichiamo il Xx opzione nel comando, il tempo di scadenza non verrà impostato. L'opzione XX non consente di impostare un nuovo tempo di scadenza se non esiste un timeout esistente associato alla chiave hash specificata.


Se usiamo il Nx Opzione, il valore di timeout è impostato su 15.

scadere notimeout 15 nx



Il comando scaduto restituisce la risposta intera 1, il che significa che il timeout è impostato correttamente.

Imposta timeout in base al valore di timeout esistente

Le opzioni GT e LT possono essere utilizzate per impostare il tempo di scadenza dell'hash in base alla lunghezza del timeout esistente.

Creiamo un nuovo hash chiamato HashwithTimeout.

HMSET HashwithTimeout Field1 Value1


Successivamente, abbiamo fissato il tempo di scadenza di 200 secondi per l'hash.

scadenza hashwithtimeout 200


Proviamo a impostare un nuovo timeout di 100 secondi per l'hash insieme all'opzione GT come segue:

scadenza hashwithtimeout 100 gt


Poiché l'opzione GT è stata specificata, il comando scadenza verificherà se il nuovo valore di timeout è maggiore di quello esistente e impostare il nuovo tempo di scadenza. In questo esempio, il nuovo timeout non è maggiore del timeout esistente. Quindi, il comando non imposterà il nuovo tempo di scadenza e 0 verrà restituito.


Usiamo l'opzione LT invece di GT. Poiché il nuovo tempo di scadenza è inferiore a quello attuale, il comando seguente dovrebbe impostare correttamente il nuovo timeout.

scadenza hashwithtimeout 100 lt


Conclusione

In breve, il comando Redis scade viene utilizzato per impostare un valore TTL per una determinata chiave. Per impostazione predefinita, i tasti hash Redis non sono associati a qualsiasi timeout che si chiama non volatile. Come discusso, il comando scaduto viene utilizzato per impostare un valore di timeout sull'hash Redis. Di solito, l'hash viene eliminato dal Redis Data Store dopo la quantità di tempo specificata come valore di timeout. Come mostrato negli esempi, il comando scadenza accetta alcuni argomenti opzionali come XX, NX, GT e LT per impostare la scadenza hash in base a una condizione.