Di solito, i comandi get and set vengono utilizzati per archiviare e recuperare i valori di tipo stringa archiviati in una determinata chiave Redis. Questi due comandi operano con costante complessità del tempo.
Inoltre, il comando getEx è disponibile per leggere i valori della stringa memorizzati a una determinata chiave. Ma questo comando è associato anche a un'operazione di scrittura parallela. Questa guida si concentrerà sulla sintassi del comando getEx, sulle sue opzioni e sui casi d'uso.
TTL di una chiave Redis
Il valore di tempo per vivere (TTL) è il tempo di scadenza di un determinato pezzo di dati. Di solito, un TTL può essere associato alle righe del database. Un timeout può essere impostato anche con i tasti Redis. Pertanto, un client Redis può controllare i secondi rimanenti in cui una determinata chiave sarà disponibile nel negozio di dati. Redis offre un comando TTL per verificare il tempo in tempo reale di una determinata chiave. Se non è associato il timeout a una chiave specificata, il comando TTL restituisce -1. Useremo il comando TTL nelle sezioni successive per verificare il tempo restante di una determinata chiave.
Il comando getEx
Come evidenziato, il comando getEx è più simile al comando GET, tranne per il fatto che può essere utilizzato per impostare un tempo di scadenza per la chiave specificata. Inoltre, un'opzione di comando può rimuovere un valore di timeout da una determinata chiave. La sintassi del comando getEx è la seguente:
Key getEx [ex timeout_in_seconds | Px timeout_in_milliseconds | Exat timeout_in_unix-time-seconds | Pxat timeout_in_unix-time-milliseconds | PERSISTERE]
chiave: Questa è la chiave che indica un valore di stringa.
I seguenti argomenti opzionali possono essere utilizzati per impostare un timeout in secondi o millisecondi.
EX: Ciò imposterà il tempo di scadenza in secondi per una determinata chiave.
PX: Il valore di timeout chiave sarà impostato in millisecondi.
Inoltre, possiamo specificare un valore di timestamp unix in secondi o millisecondi utilizzando le seguenti opzioni di comando Exat E Pxat:
Exat: Il tempo di scadenza sarà impostato nel formato timestamp unix e il timestamp sarà in pochi secondi.
PXAT: Il timeout per una determinata chiave Redis sarà impostato come un timestamp unix in millisecondi.
PERSISTERE: Specificando questo, è possibile rimuovere il tempo per vivere il valore associato a una chiave specificata.
Il comando getEx restituisce il valore della chiave specificata. Questo comando funziona solo con valori di tipo stringa ma non hash, elenchi, set ordinati, ecc. Se si specifica un tasto associato a un valore non stringa, il comando restituirà un errore. Inoltre, se la chiave è già scaduta o non esiste, il comando tornerà zero.
Nella sezione seguente, copriremo l'uso pratico del comando getEx.
Caso di utilizzo: collegamento di ripristino temporaneo o generazione del codice PIN per Password Recovery/OTPS
Una società di web hosting fornisce una funzione di recupero password per gli utenti registrati. Come misura di sicurezza, inviano un nuovo collegamento URL all'utente, che scadrà entro 5 minuti. L'azienda utilizza da molto tempo il Redis Data Store e utilizza il comando GETEX per impostare il valore di tempo per vivere per un determinato utente.
Supponiamo che un utente con user_id 1000 richieda un recupero della password. Quindi, l'URL di recupero può essere archiviato alla chiave RecoveryUrl: userid: 1000. Possiamo utilizzare il comando set per archiviare l'URL di recupero come segue:
Imposta RecoveryUrl: UserID: 1000 "https: // ABC.com/recupero/userid = 1000, key = sdfiuoe3290e9rjs "
Controlliamo se l'URL della stringa è archiviato correttamente nella chiave RecoveryUrl: userid: 1000. Possiamo usare il comando getEx come segue:
getEx RecoveryUrl: userid: 1000
L'output del comando precedente è mostrato nel seguente:
Se abbiamo usato il comando get invece del comando getex, l'output sarà lo stesso.
Usiamo il comando TTL per verificare se un tempo di scadenza è associato a questa chiave.
TTL RecoveryUrl: UserID: 1000
Come previsto, il -1 è stato restituito dal comando TTL, il che significa che nessun tempo di scadenza è associato alla chiave specificata.
Secondo questo esempio, la società di hosting deve impostare un timeout di 5 minuti per l'URL di recupero. Quindi, useremo il EX Opzione di comando. Poiché 5 minuti sono 300 secondi, possiamo costruire il comando getEx come segue:
getEx RecoveryUrl: UserId: 1000 ex 500
Eseguiamo il comando TTL alcune volte per ispezionare il tempo rimanente in cui la chiave esisterà nell'archivio dati.
Come previsto, il tempo sta diminuendo e alla fine, il RecoveryUrl: userid: 1000 La chiave verrà rimossa. Di seguito è riportato l'output dopo 5 minuti:
Il -2 è stato restituito dal comando, il che significa che la chiave è scaduta ed eliminata dal negozio di dati.
A volte, potrebbe essere necessario rimuovere il valore di timeout associato a una determinata chiave. Pertanto, l'opzione di comando persistenza può essere utilizzata per eliminare un valore TTL relativo a una chiave specificata.
Creiamo un'altra chiave di esempio e assegniamo un valore di stringa ad essa. In questo caso, specificheremo il valore TTL in millisecondi passando il Px opzione.
Imposta keytotestpersist "Questo sarà scaduto entro 60 secondi" PX 50000
Successivamente, controlleremo il tempo rimanente come segue:
Come previsto, il TTL sta diminuendo. Chiamiamo il comando getEx con l'opzione persistono come segue:
persistono keytotestpersist
Idealmente, ciò rimuoverebbe il TTL associato a questa chiave. Ispezioniamo il TTL per la chiave Keytotestpersist.
Il comando TTL ha restituito il -1, il che significa che nessun TTL è associato alla chiave Keytotestpersist.
Allo stesso modo, il GetEx Il comando può essere utilizzato per impostare il tempo di scadenza per le chiavi in timestamp unix.
Conclusione
In sintesi, il comando Redis GetEx può essere utilizzato per recuperare i valori della stringa memorizzati su una determinata chiave come fa il comando GET. L'unica differenza con il comando getEx è che supporta l'impostazione e la rimozione dei tempi di scadenza per una determinata chiave. Supporta diversi argomenti opzionali per specificare il tempo di scadenza in secondi, millisecondi e secondi UNIX-Timestamp o millisecondi. Come discusso, il comando fornisce l'opzione persistenza per rimuovere il TTL associato per una determinata chiave. Nel complesso, il comando getEx opera con costante complessità del tempo.