Forța majoră a serverului Redis constă în suportul nativ pentru structuri de date complexe, manipulate prin comenzi atomice optimizate direct în memorie C. Înțelegerea momentului oportun pentru fiecare tip de date este secretul obținerii unei eficiențe maxime.
Comenzi esențiale pentru cele 5 structuri primare în redis-cli
# 1. STRINGS: Valori simple text, numere sau payload-uri binare (max 512MB)
SET utilizator:1001:nume "Andrei Ionescu" EX 3600 # Expiră într-o oră
INCR contor:vizite:articol:42 # Incrementare atomică (+1)
DECRBY produse:stoc:sku99 3 # Scădere atomică (-3)
# 2. HASHES: Reprezentarea perfectă a obiectelor sau entităților din baza de date
HSET utilizator:1001 email "andrei@exemplu.ro" varsta 29 rol "admin"
HGET utilizator:1001 email # Returnează "andrei@exemplu.ro"
HGETALL utilizator:1001 # Returnează toate câmpurile și valorile
HINCRBY utilizator:1001 puncte_loialitate 50 # Incrementează un câmp numeric din hash
# 3. LISTS: Colecții ordonate de șiruri (implementate ca liste dublu înlănțuite)
LPUSH coada:notificari "email_bun_venit_id44" # Adaugă la început (stânga)
RPUSH coada:notificari "sms_validare_id45" # Adaugă la sfârșit (dreapta)
RPOP coada:notificari # Extrage elementul cel mai vechi (FIFO)
LRANGE coada:notificari 0 9 # Returnează primele 10 elemente
# 4. SETS: Colecții neordonate de elemente unice (fără duplicate)
SADD etichete:articol:12 "ai" "llm" "python" "ai" # "ai" nu este duplicat
SMEMBERS etichete:articol:12 # Returnează toate etichetele
SISMEMBER etichete:articol:12 "python" # Verificare rapidă O(1) -> 1 (true)
SINTER tag:utilizator:A tag:utilizator:B # Intersecția intereselor comune
# 5. SORTED SETS (ZSET): Elemente unice ordonate după un scor numeric (Score)
ZADD clasament:joc 1500 "jucator_alex" 2350 "jucator_maria" 1820 "jucator_radu"
ZREVRANGE clasament:joc 0 2 WITHSCORES # Top 3 jucători cu cele mai mari scoruri
ZREVRANK clasament:joc "jucator_alex" # Rangul jucătorului (0-indexed)
ZINCRBY clasament:joc 50 "jucator_alex" # Adaugă 50 de puncte la scor
Complexitatea Algoritmică a Operațiunilor
Majoritatea comenzilor pe Strings, Hashes (pe câmpuri individuale) și Sets au complexitatea O(1). Comenzile pe Sorted Sets precum ZADD sau ZRANK funcționează în O(log N) datorită structurii interne bazate pe Skip Lists, oferind performanță excepțională chiar și pe colecții cu zeci de milioane de chei.