Redis je systém pro správu databází, který ukládá informace ve formě párů klíč-hodnota. Klíč je název pole a hodnota je jeho obsah.

V podstatě se jedná o server, kde jsou uloženy datové struktury, především tzv. slovníky. To lze vidět v názvu systému: Redis znamená Remote Dictionary Server, tedy vzdálený slovníkový server.

Osvojte si profesi datového analytika

Analytici ovlivňují růst podnikání. Zjišťují, který produkt a v jakou dobu nakupují více. Zvažují jednotkovou ekonomiku. Vyhodnoťte návratnost investic do reklamní kampaně. Firmy proto takové specialisty hledají a lákají.

Profese / 12 měsíců
Analytik dat

Najděte vzory a vyvodte závěry, které pomohou vašemu podnikání

Redis Server je nerelační DBMS. To znamená, že neukládá informace ve formě propojených dvourozměrných tabulek, ale jinak je organizuje. Proto je Redis rychlejší a pohodlnější než standardní databáze, ale není tak spolehlivý a používá se hlavně jako pomocný systém.

V ruštině se systém nazývá „ředkvička“ s důrazem na první slabiku. Ve vývojářském slangu je to „ředkvička“ s důrazem na druhou slabiku, jako zelenina.

K čemu je Redis?

DBMS jsou potřebné pro správu dat uložených v databázích. Systém správy vám pomáhá vyhledávat data z databáze, měnit je, odesílat do úložiště, slučovat je a dělat mnohem více.

Konkrétně se Redis obvykle používá k:

  • ukládat data uživatelské relace – například text zadaný, ale neodeslaný;
  • cache informace z hlavního DBMS, aby se snížilo jeho zatížení;
  • ukládat mezilehlá data, která mají krátkou „životnost“, například výsledky odpovědí na kvíz;
  • přenášet zprávy – systém je může ukládat a předávat příjemci;
  • spravovat databáze malých aplikací a jednostránkových webů.

Redis se také používá v systémech, kde je rychlost velmi kritická. Například na finančních burzách, kde zpoždění aktualizace sazeb může vést k peněžním ztrátám. Tam se DBMS používá k ukládání rychlých dat, která je třeba přenášet maximální rychlostí. Redis se ale jako hlavní základna používá jen zřídka.

Kdo spolupracuje s Redis

Obvykle – backendery a správci DBMS, někdy další specialisté, kteří pracují se „serverovou“ částí projektů. Je vhodné, aby vývojáři, kteří se zabývají tímto serverem, znali jazyk Lua: používá se k zadávání příkazů a dotazů do systému místo obvyklého SQL.

ČTĚTE VÍCE
Co javor nemá rád?

Staňte se datovým analytikem a získejte vyhledávanou specialitu

Jak se Redis liší od relačních DBMS

Klasické systémy pro správu databází jako Oracle nebo MySQL jsou relační. Ukládají informace ve formě dvourozměrných tabulek a systémů vztahů mezi nimi. Vývojáři přistupují k DBMS pomocí dotazovacího jazyka SQL a přijímají nebo odesílají data. Požadavek však musí být vygenerován a informace vrácené databází musí být vytříděny, aby mohly být převedeny do čitelné datové struktury v nějakém programovacím jazyce.

Redis přímo ukládá data ve formě struktur a informace ukládá do paměti RAM serveru, nikoli na pevný disk. To poskytuje řadu rozdílů od tradičních DBMS.

Operace jsou dokončeny rychleji. Přístup k paměti RAM je v zásadě rychlejší než čtení nebo zápis na pevný disk nebo SSD. Zrychluje se tak celý systém a v konečném důsledku i celý produkt.

Flexibilnější práce s databází. Dvourozměrná relační tabulka je poměrně rigidní struktura a musíte s ní pracovat podle určitých pravidel. Datové struktury v Redis jsou flexibilnější a vývojář má větší volnost v tom, jak je spravovat. To pomáhá realizovat zajímavější řešení.

Žádný jazyk SQL. Redis je noSQL DBMS. To znamená, že tam není použit dotazovací jazyk SQL. Místo toho používá DBMS skripty v jazyce Lua, který je speciálně navržen tak, aby byl velmi jednoduchý, a proto se snadno naučil.

Nižší integrita dat. Na rozdíl od relačních databází nesplňuje Redis kritéria ACID, která musí splňovat hlavní databáze projektu. Jedná se o soubor pravidel: atomicita, konzistence, izolace, trvanlivost. Jednoduše řečeno, data nejsou tak dobře chráněna před poškozením jako v tradičnějších DBMS. Proto se Redis jako hlavní základ používá jen zřídka.

Jak Redis funguje

Pojďme zjistit, co je Redis zevnitř a jak pracuje s informacemi. Systém je open source a zcela zdarma, takže si každý může prohlédnout jeho zdrojový kód nebo si jej stáhnout a spustit ze svého zařízení. Nejprve však stojí za to naučit se základy.

Struktury a datové typy. Redis zpočátku podporoval pouze seznamy – datové struktury, které ukládají informace jako páry klíč–hodnota. Nyní jsou jeho možnosti mnohem širší. Podporuje:

  • řetězce – data v textovém formátu;
  • množiny jsou neuspořádané množiny jedinečných hodnot;
  • objednané sady;
  • seznamy jsou uspořádané struktury, kde jsou data číslována;
  • bitová pole jsou struktury, kde jsou data uložena v binární formě;
  • bitová pole jsou struktury, které umožňují přístup k jednotlivým bitům dat;
  • hashovací tabulky jsou speciální struktury pro ukládání párů klíč-hodnota, obvykle hashů;
  • geoprostorová data – souřadnice některých bodů na mapě;
  • HyperLogLog je pravděpodobnostní struktura pro ukládání velkého množství jedinečných dat, která zabírají konstantní množství paměti;
  • streamy jsou datové struktury dostupné pouze pro přidávání nových informací. Informace ve streamu se stanou veřejně dostupnými uživatelům.
ČTĚTE VÍCE
Jaké jsou výhody jelení paroží?

Díky své rozmanitosti lze systém flexibilně spravovat, konfigurovat a relativně snadno pracovat s informacemi. Redis navíc podporuje různé pokročilé funkce DBMS. Pojďme se na ně podívat blíže.

Týmy. Redis má příkazy pro práci se všemi výše uvedenými datovými typy. Příkazy jsou jednoduché, obvykle se skládají z jednoho nebo dvou slov a pro každé z nich je v oficiální dokumentaci návod. Například HGET načítá data z hash tabulky a EXEC provádí všechny dotazy ve frontě.

Transakce. Transakce ve správě databází je sekvenční sada operací, která se provádí celá nebo se neprovádí vůbec. Redis podporuje transakční mechanismus, ale s výhradou: pokud jeden příkaz selže, ostatní se mohou stále provádět. To může narušit integritu dat – například příjmení je zaznamenáno, ale křestní jméno nikoli, což má za následek mezeru v datech.

Předplatné. Další zajímavou funkcí Redis Serveru je implementace mechanismu předplatného. Jeden klient může vytvořit kanál a druhý se může přihlásit k jeho odběru a přijímat zprávy. Tato funkce se používá například pro upozornění na události nebo pro vytváření chatů. Jeden kanál může mít mnoho odběratelů. Mechanismus nezaručuje, že konkrétní předplatitel obdrží zprávu, a nemůže předvídat, kdo si ji přečte.

Dlouhodobé skladování. Přestože Redis primárně ukládá informace do paměti, má několik mechanismů pro ukládání dat na disk. Jedná se především o záložní kopie, protože Redis prostě není určen k trvalému a spolehlivému ukládání dat do paměti. Existují tři mechanismy:

  • RDB je vytváření „snímků databáze“, které popisují její úplný stav v určitém okamžiku. Můžete jej nastavit tak, aby automaticky pořídil fotografii jednou za určité časové období. Pokud však dojde k selhání před automatickým snímkem, můžete ztratit data;
  • AOF – vedení „provozních protokolů“, kde jsou zaznamenány informace o každé akci s databází. Protokoly jsou na sobě nezávislé, aktualizují se každou sekundu a ukládají se na disk;
  • RDB + AOF – kombinace obou metod je považována za nejspolehlivější.

Dlouhodobé ukládání lze zcela zakázat, protože Redis se zaměřuje na rychlost, nikoli na spolehlivost. To by však mělo být provedeno pouze v případě, že databáze ukládá data, která se nebojí ztráty, jako je mezipaměť.

ČTĚTE VÍCE
Komu dáváš kala?

Konfigurace Redis

Redis Server se dodává v několika konfiguracích: jedna instance, dva uzly, distribuovaný systém nebo cluster. Zde jsou jejich vlastnosti a jak se liší.

Jedna kopie. Nejjednodušší možnost: existuje jediná databáze, do které se vše zapisuje. Vhodné pro jednoduché, vzdělávací projekty a prototypy, stejně jako pro ukládání do mezipaměti. Ale taková základna má horší odolnost proti chybám a méně schopností, i když pokud jí dáte dostatek výkonu, může být docela produktivní.

Redis HA. HA je zkratka pro High Availability. Jedná se o systém, který se skládá ze dvou databází Redis: hlavní a závislé. Vedoucí databáze přijímá požadavky a zapisuje data a závislá databáze se používá jako záložní kopie. Pomocí replikace dat se tam přenášejí veškeré informace. Výsledkem je, že pokud jedna z databází selže, druhá ji dokáže nahradit – spolehlivost celého systému je vyšší.

Redis Sentinel. Složitější strukturou je distribuovaný systém. Obsahuje hlavní základnu, jednoho nebo více podřízených a také sentinelové uzliny. Sentinelové uzly koordinují práci databáze: reagují na poruchy, kontrolují dostupnost jiných databází, monitorují a odesílají upozornění. Pomáhají také obnovit systém po selhání a indikují novým klientům, která instance databáze je aktuálně vedoucí.

Cluster Redis. Nejsložitější ze všech konfigurací je cluster. Jedná se o horizontální síť zahrnující mnoho klientů a párů master-slave. Kromě replikace se zde používá sharding: rovnoměrná distribuce dat mezi všechny uzly, což pomáhá snížit zatížení serverů. Vhodné, pokud je například potřeba rozdělit databázi na více zařízení. Pro sledování se používá samostatný protokol klepnutí.

Výhody Redis

  • Vysoká rychlost je hlavním důvodem popularity DBMS mezi vývojáři.
  • Výkon – dokáže zpracovat miliony požadavků za sekundu.
  • Podporuje replikaci a sharding – můžete vytvářet distribuované systémy a škálovat je.
  • Práce s různými datovými strukturami poskytuje větší flexibilitu při vývoji.
  • Schopnost pořizovat „snímky“ databáze a zajišťovat perzistenci, to je ve skutečnosti kontrola verzí.
  • Implementace návrhového vzoru vydavatel-předplatitel díky mechanismu předplatného.
  • Rozmanitost konfigurací – můžete spustit jak pro malou aplikaci, tak pro velký systém.

Nevýhody Redis

  • Problémy s dlouhodobým zápisem na disk – Redis ukládá informace především do paměti a při vytváření „snímku“ databáze může „ztratit“ některé informace.
  • Nutnost volit mezi rychlostí a spolehlivostí – můžete povolit perzistenci dat, aby se informace neztratily, ale to snižuje výkon.
  • Drahé úložiště – ukládání dat do RAM je dražší a náročnější na zdroje než na disk. Kromě toho existují technická omezení velikosti takového úložiště.
ČTĚTE VÍCE
Kdo jí listy leknínu?

Jak začít používat Redis

Nejjednodušší způsob je nasadit jednu instanci databáze v kontejneru Docker. Zde můžete otevřít konzoli Redis a procvičit si odesílání dotazů, úpravy a zpracování databáze. K tomu je potřeba minimálně rozumět tomu, jak kontejnery fungují a nasazovat do nich programy – základy není těžké se naučit.

Semyon Berezovsky vysvětluje základy blockchainu a mluví o oblíbených úkolech ve vývoji blockchainu

Dmitrij Kharlamov o tom, proč komunikace zabírá 50 procent jeho práce

Co je to pet projekt, proč je potřeba a jak vám pomůže získat skutečné zkušenosti ještě při studiu? Shromáždil několik příběhů