DEL / UNLINK în Redis & In-Memory Data Store

Șterge una sau mai multe chei; UNLINK eliberează memoria în fundal, fără să blocheze serverul.

Sintaxă comandă
DEL key [key ...]
UNLINK key [key ...]

Ce face DEL / UNLINK

DEL șterge cheile date, de orice tip, și întoarce câte au fost șterse efectiv. Cheile care nu există sunt ignorate.

UNLINK (din Redis 4.0.0) scoate imediat cheile din baza de date, dar eliberează memoria pe un fir separat. Pentru o listă sau un hash cu milioane de elemente, DEL poate bloca serverul zeci de milisecunde, iar UNLINK nu.

Parametri

Parametru Descriere
key ... Una sau mai multe chei de șters.

Ce returnează

Un (integer): numărul de chei șterse (cheile inexistente nu se numără).

Exemple

Exemplul 1: Ștergerea mai multor chei deodată

Doar două dintre cele trei chei existau, deci răspunsul este 2.

MSET cos:ana 3 cos:dan 1
DEL cos:ana cos:dan cos:ioana
EXISTS cos:ana

Ieșire în redis-cli

127.0.0.1:6379> MSET cos:ana 3 cos:dan 1
OK
127.0.0.1:6379> DEL cos:ana cos:dan cos:ioana
(integer) 2
127.0.0.1:6379> EXISTS cos:ana
(integer) 0

Exemplul 2: UNLINK pentru o cheie mare

Lista de jurnal poate avea milioane de elemente; UNLINK o scoate imediat, iar memoria se eliberează în fundal.

LLEN jurnal:acces
UNLINK jurnal:acces
LLEN jurnal:acces

Ieșire în redis-cli

127.0.0.1:6379> LLEN jurnal:acces
(integer) 2500000
127.0.0.1:6379> UNLINK jurnal:acces
(integer) 1
127.0.0.1:6379> LLEN jurnal:acces
(integer) 0

Greșeli frecvente

  • DEL nu acceptă tipare: DEL user:* încearcă să șteargă o cheie numită literal user:*. Pentru tipare folosește SCAN și apoi UNLINK pe loturi.
  • Cu opțiunea de configurare lazyfree-lazy-user-del yes, și DEL se comportă ca UNLINK.

Comenzi înrudite

  • EXISTS: Verifică dacă una sau mai multe chei există și întoarce câte dintre ele au fost găsite.
  • KEYS vs SCAN: KEYS listează toate cheile după un tipar dintr-odată și blochează serverul; SCAN le parcurge treptat, cu un cursor.
  • FLUSHDB / FLUSHALL: Șterge toate cheile din baza de date curentă (FLUSHDB) sau din toate bazele de date (FLUSHALL).
  • GETDEL / GETEX: GETDEL citește și șterge o cheie într-un singur pas; GETEX citește și schimbă expirarea cheii.