Co je Redis: Kompletní průvodce použitím, výhodami a příklady

Poslední aktualizace: 5 září 2025
  • Redis ukládá data do paměti pomocí pokročilých struktur a atomických operací.
  • Podporuje perzistenci (RDB/AOF), asynchronní replikaci a nástroje jako Pub/Sub a Lua.
  • Ideální pro ukládání do mezipaměti, relace, zasílání zpráv a hodnocení s velmi nízkou latencí.

Použití a definice Redisu
Pokud jste někdy potřebovali, aby vaše aplikace běžela jako raketa, pravděpodobně jste slyšeli o Redisu. Tato technologie funguje jako datový systém v paměti, který nabízí velmi nízké latence a téměř okamžité odezvy, ideální, když je rychlost absolutní prioritou.

Redis není jen mezipaměť, je NoSQL databáze typu klíč-hodnota s několika datovými strukturami a integrovanými nástroji. Původně byla spuštěna v roce 2009 a napsána v jazyce C, její název pochází z Remote Dictionary Server . Dnes se může pochlubit velmi aktivním ekosystémem, klienty pro téměř jakýkoli programovací jazyk a robustními možnostmi perzistence a replikace.

Co je Redis a k čemu se používá?

Redis je engine pro ukládání dat v paměti, který pracuje s páry klíč-hodnota a pokročilými strukturami. Díky provozu v paměti RAM snižuje úzká hrdla typická pro přístup na disk , což ho činí ideálním pro případy použití, kde je vyžadována extrémní rychlost: mezipaměti pro náročné dotazy, uživatelské relace, zasílání zpráv v reálném čase, online hry, dashboardy se streamovanými daty a další.

V mnoha projektech se používá jako vrstva mezipaměti před tradičními databázemi , kde ukládá opakující se výsledky, aby se zabránilo neustálému přepočítávání nebo opakovanému dotazování. Používá se také jako samotná databáze, pokud není vyžadována striktní trvanlivost nebo pokud je její perzistence nakonfigurována tak, aby se zajistilo uložení dat na disk.

Jeho architektura klient/server, síťové rozhraní a odlehčený design usnadňují nasazení a připojení z více hostitelů. Navíc poskytuje asynchronní přenos dat mezi masterem a replikací (master pokračuje v provozu i během replikace), což pomáhá škálovat čtení a zlepšovat dostupnost.

Klíčové vlastnosti

Největší silnou stránkou Redisu je, že vše se nachází v hlavní paměti. To eliminuje přístupy k disku během kritické cesty a poskytuje extrémně rychlé operace čtení/zápisu . Každý řetězec navíc může dosáhnout až 512 MB s podporou binárních dat a zahrnuje struktury jako seznamy, množiny, seřazené množiny, haše, HyperLogLog, bitmapy a streamy.

Redis implementuje na těchto strukturách atomické operace na straně serveru na vysoké úrovni. To umožňuje provádět sjednocení, průniky nebo rozdíly na množinách, upravovat podřetězce nebo inkrementovat a snižovat celá čísla a čísla s plovoucí čárkou bez podmínek závodění.

Zahrnuje nástroje, které urychlují vývoj a zjednodušují běžné vzorce: Pub/Sub pro publikování a odběr kanálů (ideální pro zasílání zpráv a oznámení v reálném čase), klíče s TTL pro automatické vypršení platnosti, atomické čítače pro metriky a řízení souběžnosti a integrovanou podporu Lua skriptů pro logiku na straně serveru od verze 2.6.

Další silnou výhodou je kompatibilita s moduly. Moduly Redisu rozšiřují funkce, jako jsou dokumenty JSON , časové řady a vyhledávání , což z něj činí všestranný systém, který jde daleko za rámec pouhého párování klíč-hodnota.

  Kompletní průvodce Spring Frameworkem: Výkon vývoje v Javě

Funkce Redisu

Historie, licence a vývoj

Redis byl vytvořen v roce 2009 Salvatore Sanfilippo za účelem zlepšení latence produktu s názvem LLOGG. Jeho úspěch byl okamžitý a v roce 2010 společnost VMware najala Sanfilippa, aby projekt vedl na plný úvazek ; krátce poté se k němu připojil Pieter Noordhuis. V letech 2013 až 2015 jej sponzorovala společnost Pivotal a později Redis Labs.

Od verze 2.6 má server integrovaný Lua interpret, který umožňuje spouštění skriptů přímo v Redisu s atomicitou a minimalizací latence přenosu mezi klientem a serverem. Co se týče licencování, je distribuován v rámci duálního modelu RSALv2 a SSPLv1.

Datový model a operace

Redis používá globální slovník, který mapuje klíče na hodnoty. Na rozdíl od jednodušších řešení typu klíč-hodnota mohou být hodnoty různých typů. Typ určuje dostupné příkazy a atomické operace, které můžete s těmito daty provádět.

Typ Redis String je „binárně bezpečný“: může obsahovat text, celá čísla, čísla s desetinnou čárkou nebo nezpracovaná binární data, jako je obrázek JPEG nebo serializovaný objekt. Můžete pracovat s částmi řetězce, upravovat konkrétní bity nebo jej použít jako čítač s přírůstky/snížením.

Seznamy umožňují správu front nebo zásobníků, sady a uspořádané sady se používají pro členství a řazení podle skóre a haše ukládají mapy hodnot polí, což je velmi užitečné pro seskupování atributů objektu . HyperLogLog se používá pro přibližné čítače mohutnosti s velmi malým množstvím paměti a streamy usnadňují toky událostí se seskupenou spotřebou.

Redis dále nabízí transakce (MULTI/EXEC), což umožňuje seskupit více operací a provádět je sekvenčně i atomicky . V kombinaci s Lua můžete spolehlivě zapouzdřit komplexní logiku na straně serveru.

Perzistence: snímky a AOF

Redis může pracovat čistě v paměti, ale také podporuje perzistenci disku pro vyvážení výkonu a odolnosti. Pomocí snapshotů (RDB) pořizuje periodické snímky datové sady a ukládá je asynchronně, což má minimální dopad na dobu odezvy.

Druhou možností je AOF (journaling), který zaznamenává každou operaci zápisu do souboru. Tento režim poskytuje jemnější a lépe konfigurovatelnou odolnost: `appendfsync=always` vynucuje synchronizaci při každé změně (maximální zabezpečení, nižší výkon) a `appendfsync=everysec` synchronizuje každou sekundu (skvělá vyváženost).

V případě potřeby můžete také spustit ruční ULOŽENÍ a vynutit okamžité vytvoření snímku. V případě úplného selhání počítače obvykle ztratíte maximálně malé množství dat, v závislosti na zvolené synchronizační politice.

Ve starších verzích bylo použití „virtuální paměti“ povoleno od verze 2.4, ale tento přístup je nyní zastaralý. Dnes se doporučuje volit mezi RDB, AOF nebo kombinací obou , přičemž konfiguraci upravovat podle kritičnosti dat a požadovaného výkonu.

Replikace a vysoká dostupnost

Redis implementuje asynchronní replikaci master-replika. To znamená, že zápisy jsou přijímány na masteru a repliky jsou synchronizovány bez jeho blokování, čímž se služba udržuje v provozu během synchronizací . Master může mít více replik a replika může být následně zřetězena jako master jiné repliky, čímž se vytvoří stromová topologie.

  Kompletní průvodce předplatným Visual Studia

Replikace je velmi užitečná pro škálování operací čtení a pro redundanci. Některé konfigurace umožňují zápis do replik, i když to může vést k nekonzistencím, pokud není správně řízeno; ve výchozím nastavení se repliky obvykle používají pouze pro čtení, aby se zachovala konzistence.

Umístění replik v blízkosti uživatelů snižuje vnímanou latenci. Díky orchestraci a nástrojům Sentinel/Cluster lze dosáhnout vysoké dostupnosti a automatického přepnutí služeb při selhání, čímž se minimalizují prostoje v případě selhání hlavního serveru.

Architektura a ekosystém klient/server

Server Redis nabízí jednoduchý protokol, ke kterému se připojují klienti z různých jazyků. Můžete komunikovat s jeho oficiálním rozhraním příkazového řádku (redis-cli) pro testování, administraci nebo rychlé skriptování, případně integrovat knihovnu do vaší aplikace.

Existují klienti pro ActionScript, C, C++, C#, Javu, Go, Python, PHP, Ruby, Scala, JavaScript (včetně serverového Node.js), R, Erlang, Haskell, Lua, Objective-C, Perl, Common Lisp, Smalltalk, Tcl, IoT, haXe, Pure Data a další. Tato široká podpora usnadňuje implementaci napříč téměř jakýmkoli stackem.

Reálné případy použití a praktický příklad

Velmi častým příkladem je online realitní kancelář: nabídka nemovitosti s cenou, vybavením a počtem pokojů se téměř nemění. Bez ukládání do mezipaměti vyžaduje každá návštěva opakované dotazy a výpočty. V Redisu je objekt po prvním načtení uložen s klíčem (například property_4056 ) a dobou trvání (TTL) řekněme jeden měsíc. Následné návštěvy čtou z paměti a vyhýbají se přístupu k databázi.

Je také běžné ukládat do mezipaměti výsledky náročných reportů , spravovat ověřené relace, vytvářet aktuální hodnocení s seřazenými sadami nebo používat Pub/Sub jako odlehčený kanál pro zasílání zpráv mezi službami.

V testu s použitím tabulky chyb o 16 000 řádcích byl měřen čas pro: 1) dotazování databáze, 2) ukládání kolekce do Redisu a 3) čtení z Redisu. Výsledek byl pozoruhodný: načítání z Redisu bylo 26krát rychlejší než z databáze. Tato srovnání často zdůrazňují skutečný dopad na uživatelskou zkušenost a náklady na infrastrukturu.

Redis vs. Memcached

Obě technologie se používají pro ukládání do mezipaměti, ale existují mezi nimi znatelné rozdíly. Redis nabízí více datových typů (seznamy, sady, haše atd.), volitelnou perzistenci disku , Pub/Sub, Lua skripty, transakce a moduly pro rozšíření svých možností. Memcached se naopak zaměřuje na jednoduchý model klíč-hodnota v paměti bez perzistence.

Co se týče hrubého výkonu, oba jsou velmi rychlé; Redis má tendenci vynikat ve scénářích se složitými strukturami a atomickými operacemi na straně serveru. Pokud potřebujete pouze velmi jednoduchou a ultralehkou mezipaměť, může stačit Memcached , ale pokud hledáte více funkcí a flexibility, Redis obvykle vyjde na vrcholu.

  Softwarové inženýrství dnes

Spravované vs. samospravované služby (Redis a Valkey)

Redis nebo Valkey si můžete nasadit sami, nebo se rozhodnout pro spravovanou cloudovou službu. Samostatná správa vám dává úplnou kontrolu, ale škálovatelnost a údržba jsou na vás (přidávání uzlů, aktualizace, zabezpečení, zálohy, monitorování).

Spravovaná služba snižuje provozní zátěž: snadnější škálování, vysoká dostupnost a bezproblémové aktualizace. To se obvykle promítá do nižších celkových nákladů na vlastnictví a umožňuje týmu více se soustředit na modelování dat a obchodní funkce než na úkoly platformy.

Integrované nástroje: Pub/Sub, TTL, čítače a Lua

S Pub/Sub můžete vysílat zprávy v kanálech a nechat je okamžitě dostávat více odběratelů, což je ideální pro chaty, oznámení a koordinaci mezi mikroslužbami. Je to jednoduchý a efektivní vzorec.

Klíče s definovanou platností (TTL) umožňují „samočistit“ dočasná data: relace, tokeny, výsledky dotazů s vypršenou platností atd. To zabraňuje zaplňování databáze zastaralými informacemi a zjednodušuje logiku vypršení platnosti.

Atomové čítače jsou skvělé pro metriky, omezování rychlosti, fronty nebo jakýkoli jiný případ, kdy potřebujete bezpečně sčítat/odečítat v souběžných prostředích.

A konečně, integrovaná podpora Lua umožňuje spouštět skripty blízko dat s atomicitou. To snižuje zatížení sítě a umožňuje provádět složité operace v jednom kroku , což zlepšuje konzistenci a výkon.

Preguntas frecuentes

K čemu se Redis používá? Pro akceleraci aplikací s in-memory cache, relacemi, hodnocením v reálném čase, odlehčeným zasíláním zpráv s Pub/Sub a jako NoSQL databáze, když je kritická latence nebo je nakonfigurována perzistence.

Proč je Redis tak rychlý? Protože data jsou uložena v paměti RAM, což eliminuje přístupy k disku na kritické cestě a nabízí atomické operace na straně serveru; jeho protokol je navíc lehký a efektivní.

Lze ji použít jako databázi? Ano. Je to NoSQL databáze v paměti s možnostmi perzistence (RDB a AOF). V závislosti na vaší konfiguraci můžete upřednostnit výkon nebo odolnost , případně obojí kombinovat.

Jazyková podpora

Existují vyspělí klienti prakticky pro všechno: Python (redis-py), Java (Jedis), Node.js (ioredis), C#/.NET (StackExchange.Redis), PHP (phpredis), Go (go-redis), Ruby (redis-rb) a mnoho dalších. Tato rozmanitost zajišťuje bezproblémovou integraci s vaším stávajícím klientským stackem.

Redis se etabloval jako „divoká karta“ pro řešení problémů s výkonem a v reálném čase ve většině moderních architektur: kombinuje bleskovou rychlost, bohaté datové struktury, konfigurovatelnou perzistenci, replikaci a sadu praktických nástrojů, které při správném použití mění uživatelský zážitek.

Typy databáze
Související článek:
Typy databází: Relační, NoSQL a další