Ce face GETDEL / GETEX
GETDEL întoarce valoarea unei chei string și o șterge imediat, atomic. Este util pentru coduri de unică folosință: niciun alt client nu mai poate citi codul după tine.
GETEX funcționează ca GET, dar poate schimba expirarea în același timp: EX/PX setează un TTL nou, iar PERSIST îl elimină. Este potrivit pentru sesiuni cu „expirare glisantă”: fiecare citire mai prelungește sesiunea. Ambele comenzi există din Redis 6.2.0.
Parametri
| Parametru | Descriere |
|---|---|
key |
Cheia string. |
EX / PX / EXAT / PXAT |
Noua expirare (doar GETEX). |
PERSIST |
Elimină expirarea (doar GETEX). |
Ce returnează
Valoarea cheii sau (nil) dacă nu există.
Exemple
Exemplul 1: Cod de confirmare folosit o singură dată
A doua citire găsește cheia deja ștearsă.
SET cod:ana 482913 EX 300
GETDEL cod:ana
GETDEL cod:ana
Ieșire în redis-cli
127.0.0.1:6379> SET cod:ana 482913 EX 300
OK
127.0.0.1:6379> GETDEL cod:ana
"482913"
127.0.0.1:6379> GETDEL cod:ana
(nil)
Exemplul 2: Sesiune prelungită la fiecare citire
Sesiunea mai avea 120 de secunde; după GETEX ... EX 1800 are din nou 30 de minute.
SET sesiune:ab12 ana EX 120
GETEX sesiune:ab12 EX 1800
TTL sesiune:ab12
GETEX sesiune:ab12 PERSIST
TTL sesiune:ab12
Ieșire în redis-cli
127.0.0.1:6379> SET sesiune:ab12 ana EX 120
OK
127.0.0.1:6379> GETEX sesiune:ab12 EX 1800
"ana"
127.0.0.1:6379> TTL sesiune:ab12
(integer) 1800
127.0.0.1:6379> GETEX sesiune:ab12 PERSIST
"ana"
127.0.0.1:6379> TTL sesiune:ab12
(integer) -1
Greșeli frecvente
GETEXfără opțiuni se comportă exact caGET: nu schimbă expirarea.- Pe servere mai vechi de Redis 6.2 cele două comenzi nu există; acolo se folosea
MULTIcuGETșiDEL.
Comenzi înrudite
GET: Citește valoarea text salvată la o cheie; întoarce nil dacă cheia nu există.DEL / UNLINK: Șterge una sau mai multe chei; UNLINK eliberează memoria în fundal, fără să blocheze serverul.EXPIRE / PEXPIRE: Setează după câte secunde (EXPIRE) sau milisecunde (PEXPIRE) se șterge automat o cheie.PERSIST: Elimină expirarea unei chei, astfel încât aceasta să rămână permanent în Redis.