Ce face HEXPIRE / HTTL / HPERSIST
Până la Redis 7.4 se putea seta expirarea doar pe o cheie întreagă. HEXPIRE pune un TTL pe unul sau mai multe câmpuri ale unui hash: câmpul dispare singur, restul hash-ului rămâne. Variantele HPEXPIRE, HEXPIREAT și HPEXPIREAT lucrează în milisecunde sau cu momente Unix.
După cuvântul FIELDS scrii numărul de câmpuri și apoi câmpurile. HTTL arată cât mai are fiecare câmp, iar HPERSIST elimină expirarea. Răspunsul e o listă cu un cod pentru fiecare câmp.
Parametri
| Parametru | Descriere |
|---|---|
seconds |
Durata până la ștergerea câmpurilor. |
NX | XX | GT | LT |
Aceleași condiții ca la EXPIRE. |
FIELDS numfields field ... |
Numărul de câmpuri, urmat de numele lor. |
Ce returnează
O listă cu un cod pe câmp. HEXPIRE: 1 setat, 0 condiție neîndeplinită, 2 câmp șters imediat (durată 0), -2 câmp inexistent. HTTL: secundele rămase, -1 fără expirare, -2 câmp inexistent. HPERSIST: 1 eliminat, -1 nu avea expirare, -2 inexistent.
Exemple
Exemplul 1: Un cod temporar într-un profil
Doar câmpul cod_sms expiră după 5 minute; email nu există, deci primește -2.
HSET utilizator:7 nume Ana cod_sms 482913
HEXPIRE utilizator:7 300 FIELDS 2 cod_sms email
HTTL utilizator:7 FIELDS 2 cod_sms nume
Ieșire în redis-cli
127.0.0.1:6379> HSET utilizator:7 nume Ana cod_sms 482913
(integer) 2
127.0.0.1:6379> HEXPIRE utilizator:7 300 FIELDS 2 cod_sms email
1) (integer) 1
2) (integer) -2
127.0.0.1:6379> HTTL utilizator:7 FIELDS 2 cod_sms nume
1) (integer) 300
2) (integer) -1
Exemplul 2: Anularea expirării unui câmp
HPERSIST face câmpul din nou permanent.
HPERSIST utilizator:7 FIELDS 1 cod_sms
HTTL utilizator:7 FIELDS 1 cod_sms
Ieșire în redis-cli
127.0.0.1:6379> HPERSIST utilizator:7 FIELDS 1 cod_sms
1) (integer) 1
127.0.0.1:6379> HTTL utilizator:7 FIELDS 1 cod_sms
1) (integer) -1
Greșeli frecvente
- Nu uita numărul de după
FIELDS:HEXPIRE k 60 FIELDS coddă eroare, corect esteFIELDS 1 cod. - Comenzile nu există pe servere mai vechi de Redis 7.4 și nici în unele servicii compatibile Redis.
- Un
HSETpe un câmp cu expirare îi elimină expirarea, la fel caSETpe o cheie.
Comenzi înrudite
EXPIRE / PEXPIRE: Setează după câte secunde (EXPIRE) sau milisecunde (PEXPIRE) se șterge automat o cheie.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ă.HSET: Scrie unul sau mai multe câmpuri într-un hash (un obiect cu perechi câmp–valoare), creând hash-ul dacă lipsește.