EXPIRE / PEXPIRE în Redis & In-Memory Data Store

Setează după câte secunde (EXPIRE) sau milisecunde (PEXPIRE) se șterge automat o cheie.

Sintaxă comandă
EXPIRE key seconds [NX | XX | GT | LT]
PEXPIRE key milliseconds [NX | XX | GT | LT]
EXPIREAT key unix-time-seconds [NX | XX | GT | LT]

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 SET nou pe cheie elimină expirarea. Dacă reîmprospătezi valoarea unui cache, pune din nou EX sau folosește KEEPTTL.
  • EXPIRE pe 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ă.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: EXPIRE / PEXPIRE

Ai o nelămurire despre utilizarea comenzii EXPIRE / PEXPIRE sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.