Ce face EXPIRE / PEXPIRE
EXPIRE pune un termen de expirare pe o cheie existentă: după numărul dat de secunde, Redis o șterge singur. PEXPIRE (din Redis 2.6.0) face același lucru în milisecunde, iar EXPIREAT primește un moment Unix exact.
Din Redis 7.0 există condițiile NX (doar dacă nu are expirare), XX (doar dacă are deja), GT (doar dacă noul termen e mai mare) și LT (doar dacă e mai mic). Expirarea dispare la SET, GETSET sau PERSIST, dar rămâne la INCR, LPUSH, HSET și alte modificări ale valorii.
Parametri
| Parametru | Descriere |
|---|---|
seconds / milliseconds |
Durata până la ștergere. O valoare 0 sau negativă șterge cheia imediat. |
NX / XX |
Setează doar dacă cheia nu are / are deja expirare (Redis 7.0+). |
GT / LT |
Setează doar dacă noul termen este mai mare / mai mic decât cel curent (Redis 7.0+). |
Ce returnează
1 dacă expirarea a fost setată, 0 dacă cheia nu există sau o condiție (NX/XX/GT/LT) a împiedicat setarea.
Exemple
Exemplul 1: Coș de cumpărături care expiră după o oră
INCR nu șterge expirarea, deci TTL-ul rămâne.
SET cos:ana:produse 2
EXPIRE cos:ana:produse 3600
INCR cos:ana:produse
TTL cos:ana:produse
EXPIRE cos:dan:produse 3600
Ieșire în redis-cli
127.0.0.1:6379> SET cos:ana:produse 2
OK
127.0.0.1:6379> EXPIRE cos:ana:produse 3600
(integer) 1
127.0.0.1:6379> INCR cos:ana:produse
(integer) 3
127.0.0.1:6379> TTL cos:ana:produse
(integer) 3600
127.0.0.1:6379> EXPIRE cos:dan:produse 3600
(integer) 0
Exemplul 2: Condițiile NX și GT
NX nu mai setează nimic, pentru că cheia are deja expirare. GT acceptă doar o prelungire.
SET token:ana xyz EX 600
EXPIRE token:ana 60 NX
EXPIRE token:ana 300 GT
EXPIRE token:ana 1200 GT
PEXPIRE token:ana 1500
PTTL token:ana
Ieșire în redis-cli
127.0.0.1:6379> SET token:ana xyz EX 600
OK
127.0.0.1:6379> EXPIRE token:ana 60 NX
(integer) 0
127.0.0.1:6379> EXPIRE token:ana 300 GT
(integer) 0
127.0.0.1:6379> EXPIRE token:ana 1200 GT
(integer) 1
127.0.0.1:6379> PEXPIRE token:ana 1500
(integer) 1
127.0.0.1:6379> PTTL token:ana
(integer) 1498
Greșeli frecvente
- Un
SETnou pe cheie elimină expirarea. Dacă reîmprospătezi valoarea unui cache, pune din nouEXsau foloseșteKEEPTTL. EXPIREpe o cheie inexistentă nu o creează: întoarce 0.- Expirarea se aplică întregii chei. Pentru câmpuri individuale dintr-un hash există
HEXPIRE(Redis 7.4+).
Comenzi înrudite
TTL / PTTL: Arată cât timp mai are o cheie până expiră: în secunde (TTL) sau milisecunde (PTTL); -1 fără expirare, -2 dacă nu există.PERSIST: Elimină expirarea unei chei, astfel încât aceasta să rămână permanent în Redis.SET: Salvează o valoare text la o cheie, opțional cu expirare (EX/PX), doar dacă nu există (NX) sau doar dacă există (XX).HEXPIRE / HTTL / HPERSIST: Setează expirarea pe câmpuri individuale dintr-un hash (Redis 7.4+), le verifică TTL-ul sau o elimină.
Întrebări & Exemple de Cod:
EXPIRE / PEXPIREAi o nelămurire despre utilizarea comenzii
EXPIRE / PEXPIREsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.