Chiave hash Redis EXPIRE

Chiave Hash Redis Expire



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 campo-valore che possono essere utilizzate per modellare oggetti di dominio. La struttura dei dati hash di Redis è estremamente efficiente in termini di memoria in cui ogni chiave hash può archiviare fino a quattro miliardi di coppie campo-valore. Ancora più importante, le operazioni hash fondamentali come HSET, HGET, HMGET, ecc. operano su una complessità temporale costante.


Le chiavi hash Redis hanno un tempo di vita infinito (TTL), il che significa che sono persistenti e vengono eliminate esplicitamente utilizzando comandi come DEL. In questo articolo, ci concentreremo sull'impostazione degli hash TTL per Redis utilizzando il comando EXPIRE.







Comando Redis SCADENZA

Il comando EXPIRE viene utilizzato per impostare un timeout su una determinata chiave di un hash Redis, un set, un elenco, ecc. La chiave Redis viene eliminata dal database se il timeout scade. Ancora più importante, il timeout non viene cancellato finché 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 EXPIRE è la seguente:



EXPIRE chiave di scadenza_tempo_secondi [ NX | GX | GT | LT ]


chiave: La chiave dell'hash, dell'elenco o del set di cui hai bisogno per impostare un timeout.





scadenza_tempo_secondi: Il valore di timeout in secondi.

Diversi argomenti opzionali sono accettati dal comando EXPIRE.



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

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

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

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

Soprattutto, il comando EXPIRE opera su una complessità temporale costante. Il numero intero 1 viene restituito se l'esecuzione del comando ha esito positivo. Se l'operazione non riesce a causa di argomenti errati o chiavi inesistenti, viene restituito 0.

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

Fai scadere l'hash Redis usando il comando EXPIRE

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 campo-valore come segue:

sessione hmset:id: 1000 :utente: 10 nome utente 'jae' biscotto 'sì' parola d'ordine '389Ysu2'


Esaminiamo l'hash creato usando il comando HGETALL.

sessione hgetall: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 EXPIRE come segue:

scadenza sessione:id: 1000 :utente: 10 10


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


Come previsto, il valore restituito è 1, il che significa che il TTL è impostato correttamente per l'hash. Controlliamo il tempo rimasto prima che la chiave hash venga rimossa dal negozio Redis. Il comando TTL può essere utilizzato come segue:

sessione ttl:id: 1000 :utente: 10



Come mostrato nell'output, rimangono 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.

Impostare il timeout in base all'esistenza di un'ora di scadenza

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

hmset noTimeOut nome 'test'


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

scade noTimeOut quindici XX


Poiché 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 associato alla chiave hash specificata.


Se usiamo il NX opzione, il valore di timeout è impostato su 15.

scade noTimeOut quindici NX



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

Imposta il 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 durata del timeout esistente.

Creiamo un nuovo hash chiamato hashWithTimeout.

hmset hashWithTimeout campo1 valore1


Successivamente, impostiamo un tempo di scadenza di 200 secondi per l'hash.

scade hashWithTimeout 200


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

scade hashWithTimeout 100 GT


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


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.

scade hashWithTimeout 100 LT


Conclusione

In breve, il comando Redis EXPIRE viene utilizzato per impostare un valore TTL per una determinata chiave. Per impostazione predefinita, le chiavi hash Redis non sono associate a nessun timeout chiamato non volatile. Come discusso, il comando EXPIRE viene utilizzato per impostare un valore di timeout sull'hash Redis. Di solito, l'hash viene eliminato dall'archivio dati Redis dopo il periodo di tempo specificato come valore di timeout. Come mostrato negli esempi, il comando EXPIRE accetta alcuni argomenti opzionali come XX, NX, GT e LT per impostare la scadenza dell'hash in base a una condizione.