Redis — in-memory cachování pro weby a e-shopy
Redis je vrstva rychlosti za weby, e-shopy a marketplace postavenými na 4buildsite: drží v paměti (RAM) přesně ta data, která je třeba servírovat opakovaně — cachované stránky, relace, košíky, limity četnosti — a odpovídá za méně než milisekundu. Zdrojem pravdy zůstává PostgreSQL; Redis ho chrání při vysokém provozu . Je v ceně a spravovaný platformou, bez jakéhokoli nastavování z vaší strany.
Co je Redis a proč je tak rychlý
Redis (REmote DIctionary Server) je open-source in-memory databáze: drží data v RAM, ne na disku, takže odpovídá za méně než milisekundu. Na 4buildsite ho používáme jako akcelerační vrstvu před PostgreSQL — pro vše, co se musí servírovat okamžitě: stránky, relace, košíky a limity četnosti.
Na rozdíl od disku je RAM o řády rychlejší a Redis přidává nativní datové struktury (string, hash, list, set, sorted set, stream), které umožňují složité operace přímo v paměti, bez zpáteční cesty do hlavní databáze. Zpracování příkazů je single-threaded, takže chování je předvídatelné a bez race conditions.
- Typická latence pod 1 ms a přes 100 000 operací za sekundu na jediném uzlu
- Nativní struktury: hashe pro relace, sorted set pro žebříčky a rate limiting, stream pro fronty
- Single-threaded zpracování příkazů → předvídatelné chování, bez složitých blokací
Cachování: vaše stránky a data, servírované z paměti
Strategií je cache-aside: první požadavek čte z PostgreSQL a uloží výsledek do Redisu s TTL (doba života); další požadavky ho berou přímo z paměti. Když upravíte stránku, klíč se explicitně smaže — nikdy neservírujeme zastaralá data díky slepému TTL.
U prezentačního webu nebo e-shopu to znamená, že seznamy produktů, menu, oblíbené stránky a fragmenty obsahu se doručují z paměti, bez přetěžování databáze. Ve špičkách (kampaň, Black Friday) Redis pohlcuje opakované požadavky a chrání databázi.
- Cache-aside s explicitní invalidací — žádná zastaralá data
- Ukládá fragmenty stránek a výsledky dotazů, nejen celé stránky
- Chrání PostgreSQL při špičkách provozu a zkracuje doby odezvy
Relace, nákupní košík a ochrana proti zneužití
Uživatelské relace a refresh tokeny jsou v Redisu: autentizace, automatické vypršení přes TTL a odvolání na všech zařízeních, když se někdo odhlásí nebo změní heslo.
Nákupní košík v e-shopech postavených na 4buildsite je pro nepřihlášené návštěvníky držen v Redisu, s expirací, bez nafukování hlavní databáze. Také rate limiting na kontaktních formulářích a při přihlášení zajišťuje Redis pomocí sorted sets, aby zastavil spam a pokusy o útok hrubou silou dřív, než se dostanou do databáze.
- Úložiště relací s automatickou expirací a selektivním odvoláním tokenů
- Perzistentní košík s TTL pro anonymní návštěvníky
- Rate limiting a ochrana proti zneužití u formulářů a autentizace
Reálný čas a fronty úloh na pozadí
Redis Pub/Sub a Streams pohánějí aktualizace v reálném čase: zásoba, která klesá živě, notifikace v aplikaci, měnící se stav objednávky — vše bez toho, aby návštěvník musel obnovit stránku, a bez opakovaného pollingu, který zatěžuje server.
Náročné úlohy (zpracování obrázku, generování exportu, synchronizace) jdou do fronty v Redisu a na pozadí je zpracovávají workery, aby návštěvník nečekal na jejich dokončení. Mechanismus distribuovaného zamykání zaručuje, že se kritická operace nespustí dvakrát.
- Pub/Sub a Streams pro živé události (zásoby, objednávky, notifikace)
- Fronty úloh pro náročné zpracování spouštěné asynchronně
- Distribuované zamykání pro operace, které se nesmějí spustit dvakrát
Výhody a omezení
Výhody
- Odezva pod 1 ms: cachovaná data se čtou z paměti
- Dramaticky snižuje zátěž PostgreSQL při vysokém provozu
- Nativní struktury pro relace, košík, rate limiting a žebříčky
- Pub/Sub a Streams pro funkce v reálném čase, bez pollingu
- Fronty úloh pro náročné zpracování, bez blokování návštěvníka
- V ceně a spravovaný platformou — žádné nastavování z vaší strany
Omezení
- Data leží v RAM, která je dražší než disk → není pro obrovské objemy „studených“ dat
- Je to cache / pomocná vrstva, ne zdroj pravdy — trvalá data zůstávají v PostgreSQL
- Perzistence (RDB/AOF) snižuje, ale úplně neodstraňuje riziko ztráty posledních sekund při pádu
- Vyžaduje správnou strategii invalidace, jinak může servírovat zastaralá data
Stručný verdikt
Redis používejte pro vše, co musí být okamžité — cachování, relace, košík, rate limiting, reálný čas a fronty úloh. Nepoužívejte ho jako hlavní úložiště dat; k tomu zůstává PostgreSQL. Na 4buildsite máte obojí, správně přiřazené automaticky: nemusíte nic vybírat ani nastavovat.
Tabulka specifikací
| Schopnost | Detail | Kde se používá v builderu |
|---|---|---|
| Latence | < 1 ms (in-memory) | Stránky a data servírované z paměti |
| Propustnost | > 100 000 ops/s na uzel | Vysoký provoz bez pádu databáze |
| Datové struktury | string, hash, list, set, sorted set, stream | Relace, košík, žebříčky, fronty, rate limiting |
| Perzistence | Snapshot RDB + log AOF | Rychlá obnova po restartu |
| Expirace | TTL na klíč | Košík, relace a cache s automatickým čištěním |
| Reálný čas | Pub/Sub + Streams | Živé zásoby, notifikace, stav objednávky |
Redis (cache) vs. jen databáze
| Kritérium | S Redisem | Jen PostgreSQL |
|---|---|---|
| Doba odezvy u opakovaných dat | pod 1 ms, z paměti | desítky ms, dotaz při každém požadavku |
| Při vysokém provozu | databáze chráněná, snadno škáluje | databáze se zahlcuje, hrozí timeouty |
| Košík a relace | rychlé, s automatickou expirací | tabulky, které rostou a zatěžují databázi |
| Reálný čas | nativní Pub/Sub a Streams | opakovaný polling, nákladný |
| Fronty úloh | nativní, jednoduché na použití | improvizovaná řešení nebo žádná |
Často kladené otázky
Co je Redis, stručně?
Ultrarychlá in-memory databáze, používaná jako vrstva pro cache, relace a reálný čas před hlavní databází. Odpovídá za méně než milisekundu.
Proč nepoužíváte jen PostgreSQL?
PostgreSQL je zdroj pravdy (trvalá data), ale Redis servíruje opakovaná data za méně než milisekundu a přebírá košík, relace, rate limiting a reálný čas, čímž chrání databázi při vysokém provozu. Oba spolupracují.
Přijdu o data, když Redis spadne?
Ne o obsah webu: trvalá data jsou v PostgreSQL. V Redisu leží jen cache a dočasná data a perzistence RDB/AOF ztráty snižuje. Restart Redisu váš publikovaný web neovlivní.
Musím Redis nastavovat sám?
Ne. Je v ceně a spravovaný platformou 4buildsite; funkce v reálném čase získáváte, aniž byste cokoli spravovali.
Jak Redis pomáhá online obchodu?
Košík pro návštěvníky, cachované seznamy produktů, živě aktualizované zásoby a ochrana proti zneužití při pokladně a ve formulářích — vše bez zatěžování databáze.
Jak souvisí Redis s dobou odezvy serveru (TTFB)?
Redis servíruje opakovaná data z paměti, takže server nemusí při každém požadavku znovu posílat dotaz do databáze. TTFB (Time to First Byte) je doba, než prohlížeč obdrží první bajt odpovědi serveru; započítává se do ní i čas dotazu do databáze.