În Redis, Bitmaps (hărți de biți) nu sunt un tip de date separat, ci o serie de operațiuni orientate pe biți aplicate direct asupra șirurilor standard (Strings). Deoarece un șir Redis poate atinge 512 MB, un singur Bitmap poate stoca până la 4,29 miliarde de biți independenți (flag-uri booleene 0 sau 1).
Această structură oferă o densitate de informație inegalabilă: puteți verifica prezența sau activitatea a 100 de milioane de utilizatori într-un spațiu de doar 12 MB de memorie RAM!
# 1. Utilizatorul cu ID-ul 42 și utilizatorul cu ID-ul 100 se autentifică azi:
SETBIT actiune:2026-10-24 42 1
SETBIT actiune:2026-10-24 100 1
# 2. Verificăm dacă un anumit utilizator a fost activ:
GETBIT actiune:2026-10-24 42
# Răspuns: 1
GETBIT actiune:2026-10-24 99
# Răspuns: 0
# 3. Aflăm numărul total de utilizatori activi în ziua respectivă (Population Count):
BITCOUNT actiune:2026-10-24
# Răspuns: (integer) 2
# 4. Calculăm utilizatorii activi în AMBELE zile (operație logică AND la nivel de procesor):
SETBIT actiune:2026-10-23 42 1
SETBIT actiune:2026-10-23 77 1
# Creăm bitmap-ul 'activi:ambele_zile' prin intersecția celor două zile:
BITOP AND activi:ambele_zile actiune:2026-10-23 actiune:2026-10-24
BITCOUNT activi:ambele_zile
# Răspuns: (integer) 1 (doar utilizatorul 42 a fost activ în ambele zile!)
Manipularea Întregilor Arbitrari cu comanda BITFIELD
Comanda BITFIELD permite citirea, scrierea și incrementarea unor întregi cu semn (i8, i16, etc.) sau fără semn (u4, u14, etc.) alocați la un anumit offset de biți, definind comportamentul la depășire (overflow):
# Incrementăm un număr întreg fără semn pe 8 biți (u8) de la offset-ul 0 cu valoarea 5:
BITFIELD contor:utilizator OVERFLOW SAT INCRBY u8 0 5
# Dacă valoarea depășește maximul reprezentabil pe 8 biți (255), modificatorul 'OVERFLOW SAT'
# o blochează la valoarea maximă 255 fără a cicla la zero (fără wraparound nedorit).