GETDEL / GETEX în Redis & In-Memory Data Store

GETDEL citește și șterge o cheie într-un singur pas; GETEX citește și schimbă expirarea cheii.

Sintaxă comandă
GETDEL key
GETEX key [EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds | PERSIST]

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

  • GETEX fără opțiuni se comportă exact ca GET: nu schimbă expirarea.
  • Pe servere mai vechi de Redis 6.2 cele două comenzi nu există; acolo se folosea MULTI cu GET și DEL.

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.