Redis palaiko kelis duomenų struktūras kaip reikšmes — eilutes, sąrašus, maišus, aibės, rūšiuotas aibes, be to, specializuotus tipus (srautus, bitmap'us, HyperLogLog, geografinius). Tinkamo tipo pasirinkimas kiekvienam panaudojimo atvejui yra esminis norint efektyviai naudoti Redis.
Pagrindiniai duomenų tipai
# STRING — the simplest (text, numbers, even binary up to 512MB)
SET key "value"
INCR counter # atomic increment (strings can be counters)
# LIST — ordered list of strings (a linked list — fast push/pop at ends)
LPUSH mylist "a" # push left
RPUSH mylist "b" # push right
LRANGE mylist 0 -1 # get all → useful for queues, recent-items
# HASH — a map of field→value (like an object/record)
HSET user:1 name "Ann" age 30
HGET user:1 name # => "Ann" → great for storing objects
# SET — unordered unique strings
SADD tags "redis" "cache"
SISMEMBER tags "redis" # membership test; SINTER/SUNION for set operations
# SORTED SET (ZSET) — unique members each with a SCORE, kept ordered by score
ZADD leaderboard 100 "Ann" 90 "Bob"
ZRANGE leaderboard 0 -1 WITHSCORES # ranked → leaderboards, priority queues
Specializuoti tipai
STREAM → an append-only log (like a message queue/event log with consumer groups)
BITMAP → bit operations on strings (compact flags, e.g. daily active users)
HYPERLOGLOG → approximate unique counts using tiny memory (cardinality estimation)
GEOSPATIAL → store/query locations (geo radius queries)
Tinkamo tipo pasirinkimas
String → simple values, counters, cached serialized data
List → queues, stacks, recent-items, activity feeds
Hash → objects/records (store fields of an entity together)
Set → unique collections, membership tests, tags, relationships
Sorted Set → leaderboards, rankings, priority queues, time-ordered data
→ Picking the right structure makes operations efficient and natural.
Kodėl tai svarbu
Redis duomenų tipų supratimas yra esminis Redis efektyviam naudojimui, nes Redis galia slypi būtent jo turtingose duomenų struktūrose (ne vien paprastame raktų-reikšmių saugojime), todėl jų žinojimas ir kiekvieno panaudojimas yra esminės praktinės žinios.
Pagrindiniai tipai tinka skirtingiems poreikiams: eilutės (paprastos reikšmės ir atominiai skaitikliai), sąrašai (sutvarkytų elementų rinkiniai eilutėms, krūvoms ir naujausių elementų srautams), maišai (objektų/įrašų saugojimas su keliais laukais kartu — efektyvus objektams), aibės (unikalūs rinkiniai narystės testams, žymoms ir santykiams, su aibės operacijomis kaip sankirta), ir rūšiuotos aibės (nariai reitinguoti pagal balą — natūralus pasirinkimas lyderių lentelėms, reitingams ir prioritetų eilutėms).
Specializuotų tipų supratimas — srautai (pridedami žurnalai su vartotojų grupėmis, pranešimų eilutėms ir įvykių fiksuojimui), bitmap'ai (kompaktiški požymiai), HyperLogLog (apytikslus unikalių elementų skaičius mažoje atmintyje) ir geografiniai (vietos užklausos) — praplečia tai, ką Redis gali efektyviai daryti.
Svarbiausia, tinkamo tipo pasirinkimas kiekvienam panaudojimo atvejui (rūšiuota aibė lyderių lentelei, mašas objektui, sąrašas eilutei) yra tai, kas Redis operacijas daro efektyviomis ir natūraliomis — naudojant netinkamą struktūrą veda prie nerangių ir lėtų sprendimų.
Kadangi Redis vertė slypi jo duomenų struktūrose ir jų tinkamas naudojimas yra pagrindinė Redis darbo įgūdžio dalis, ir kadangi struktūros pasirinkimas tiesiogiai lemia, ar operacijos yra efektyvios ir kodas švarus, Redis duomenų tipų supratimas — pagrindiniai ir specializuoti tipai bei jų panaudojimo atvejai — yra esminės, dažnai taikomos žinios visiems Redis naudotojams, pagrindas efektyviam Redis panaudojimui, viršijant trivialų raktų-reikšmių saugojimą.
