Redis
Redis je open-source in-memory dátový sklad, ktorý uchováva dáta priamo v operačnej pamäti a dosahuje latenciu v mikrosekundách. Podporuje bohaté dátové štruktúry a slúži na cachovanie, správu sessions, fronty úloh, rate limiting a real-time pub/sub komunikáciu.
Ako to funguje
PostgreSQL je spoľahlivá, trvalá databáza — ale každý dotaz znamená disk I/O a CPU na parsovanie SQL. Pre časté operácie s predvídateľnými dátami — napríklad načítanie konfigurácie systému, počet neprebratých notifikácií, výsledok drahého analytického dotazu — sa oplatí výsledok na chvíľu uložiť do pamäte. Redis toto robí natívne a s extrémnou rýchlosťou: dáta v pamäti sú o niekoľko rádov rýchlejšie ako dáta na disku.
Redis nie je len kľúč-hodnota sklad. Podporuje reťazce, hashe (pre objekty), zoznamy (pre fronty a stáčiky), množiny (pre unikátne hodnoty), zoradené množiny (pre leaderboardy a fronty s prioritou) a bitmaps (pre efektívne počítanie). Každý typ má vlastné atomické operácie — INCR inkrementuje číslo, ZADD pridáva do zotriedenej množiny, LPUSH/RPOP implementuje FIFO frontu. Tieto operácie sú atómické aj bez transakcií, čo ich robí bezpečnými pre súbežné prístupy z viacerých procesov.
Kritický rozdiel oproti PostgreSQL: Redis je primárne in-memory. Ak sa server reštartuje bez persistencie, dáta sa stratia. Redis ponúka dve formy persistencie: RDB (pravidelné snímky na disk) a AOF (append-only log každej operácie). Pre cachovanie je strata dát pri reštarte akceptovateľná — cache sa doplní pri prvom dopyte. Pre session tokeny alebo fronty úloh je persistencia nevyhnutná. V produkcii zvyčajne kombinujeme RDB a AOF, alebo používame managed Redis (Upstash, Redis Cloud) kde persistenciu a replikáciu zabezpečuje provider.
BullMQ je populárna knižnica pre fronty úloh postavená na Redise. Umožňuje spustiť úlohu asynchrónne — email sa zaradí do fronty, worker ho spracuje na pozadí, používateľ nedostane odpoveď až po odoslaní. BullMQ podporuje retry logiku (automatické opakovanie pri zlyhaní), delay (spustiť úlohu o X sekúnd), priority fronty a monitoring cez BullBoard. Toto je základ pre webhooky, odosielanie emailov, generovanie PDF reportov a akúkoľvek operáciu, ktorá je príliš pomalá na synchronné spracovanie v HTTP requeste.
Z našej praxe
V Strange Loops je Redis štandardnou súčasťou každého projektu s asynchrónnym spracovaním. Pre Ovulogy (edtech SaaS) sme Redis nasadili ako backend pre BullMQ — všetky transakčné emaily (onboarding, platobné potvrdenia Stripe webhooky) idú cez frontu, aby HTTP request neblokoval na odoslaní. Pre QualiTravel (travel agency management) Redis slúži na cachovanie GDS odpovedí — drahé dotazy na letové dostupnosti sa cacheujú s TTL 60 sekúnd, čo pri vysokom objeme dopytov dramaticky znižuje záťaž na externé GDS systémy a náklady za API volania. Pre rehabit je Redis session store — autentifikácia cez Better Auth ukladá sessions do Redisu pre rýchle overenie bez databázového dotazu. Všetky produkčné inštancie bežia ako Docker kontajner na DigitalOcean s AOF persistenciou.
Kedy to potrebujete
- Cachujete výsledky drahých databázových dotazov alebo externých API volaní, aby opakované požiadavky neblokovali zdroje
- Potrebujete asynchrónne spracovanie — emaily, PDF generovanie, webhooky — aby HTTP request vrátil odpoveď okamžite a práca prebehla na pozadí
- Implementujete rate limiting API endpointov — obmedzenie počtu požiadaviek na endpoint za časové okno bez nutnosti databázového dotazu
- Ukladáte session tokeny pre autentifikáciu — rýchle overenie identity pri každom requeste bez zaťažovania PostgreSQL
Najčastejšie otázky
Môžem Redis použiť namiesto PostgreSQL?
Pre väčšinu prípadov nie. Redis je rýchly, ale primárne in-memory — nie je navrhnutý pre trvalé ukladanie veľkých relačných dát s ACID zárukami. PostgreSQL je transakčná databáza s trvalým ukladaním, komplexnými dotazmi a relačnými väzbami. Redis a PostgreSQL sa dopĺňajú: PostgreSQL je primárny zdroj pravdy, Redis je rýchla cache a dátová štruktúra pre špecifické účely.
Čo sa stane s dátami v Redise pri reštarte servera?
Závisí od konfigurácie persistencie. Bez persistencie (predvolené) sa dáta stratia — čo je akceptovateľné pre cachovanie. S RDB persistenciou Redis pravidelne (každých X sekúnd alebo Y zmien) zapíše snímku na disk — strata dát je obmedzená na interval medzi snímkami. S AOF persistenciou sa každá operácia zapisuje na disk — takmer nulová strata dát, ale väčší disk overhead. V produkcii odporúčame kombináciu alebo managed Redis so zabudovanou replikáciou.
Čo je BullMQ a prečo ho potrebujem?
BullMQ je knižnica pre fronty úloh postavená na Redise. Namiesto priameho vykonania pomalej operácie (odoslanie emailu, generovanie PDF, volanie externého API) zaradíte úlohu do fronty a okamžite vrátite odpoveď používateľovi. Worker proces frontu sleduje a úlohu vykoná asynchrónne. BullMQ pridáva retry logiku, monitoring a priority — a Redis ako backend zaisťuje, že žiadna úloha sa nestratí ani pri páde workerového procesu.
Súvisiace pojmy
PostgreSQL
PostgreSQL je open-source objektovo-relačná databáza, ktorá kombinuje silu tradičného SQL s rozšírenými typmi dát — JSON, arrays, full-text search, geospatial — a považuje sa za najvyspelejšiu open-source databázu svojej kategórie.
Docker
Docker je platforma na kontajnerizáciu — zabalenie aplikácie spolu s jej závislosťami, konfiguráciou a runtime prostredím do prenositeľného kontajnera, ktorý beží identicky na laptope vývojára, CI serveri aj v produkcii.
Linux
Linux je open-source operačný systém — presnejšie jadro (kernel) — vytvorený Linusom Torvaldom v roku 1991, ktorý dnes pohára väčšinu serverov, cloudových platforiem, superpočítačov a zariadení Internetu vecí na svete.
Potrebujete s tým pomôcť?
Ak riešite niečo z toho, čo tu opisujeme, ozvite sa. Povieme vám, či a ako vieme pomôcť.