Jarní květiny

K čemu jsou ředkvičky?

Řekneme vám, co je Redis: zvažujeme jeho použití a výhody, podporované datové typy.

V této recenzi vám řekneme, co je Redis a proč jej potřebujete, zvážíme jeho použití a výhody a podporované datové typy. Podívejme se podrobně na konfigurace, operační modely a příklady použití tohoto systému správy databází.

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

Jednoduše řečeno, Redis je systém pro ukládání dat ve formě struktur. Jedná se o nerelační open source DBMS organizovaný na bázi klíč-hodnota. Je pomocná a slouží jako úložiště (Redis storage) a cache pro hlavní, centrální databázi. Posledně jmenované lze použít například PostgreSQL nebo MySQL.

Název DBMS pochází ze zkratky „Remrva Dislovník Sněkdy” – ReDiS. Produkt vyvinul italský programátor S. Sanfilippo, který nebyl spokojen s výkonem běžných databází při škálování. První verze byla vydána v roce 2009 a od té doby je systém pravidelně aktualizován.

Poslední stabilní verze zveřejněná na oficiálních stránkách Redis.io v době psaní tohoto článku je 7.0.5.

Výhody práce s databázemi Redis

Vzhledem k tomu, že databáze nepoužívá strukturovaný dotazovací jazyk SQL, má úložiště Redis řadu výhod.

  • Výkon. Vzhledem k tomu, že data jsou uložena v paměti RAM serveru, jsou databáze NoSQL mnohem rychlejší ve srovnání s relačními DBMS. To vám umožní snížit zatížení hlavních databází zpracováním trvalých dat v paměti RAM a také těch, která se často mění, ale nejsou důležitá.
  • Flexibilita datových struktur. NoSQL databáze umožňují pracovat s nestrukturovanými daty – ukládají se nikoli v klasické tabulkové formě, ale podle typu. Objem uložených dat je navíc prakticky neomezený a v případě potřeby lze přidávat nové typy dat.

Jaké datové typy podporuje Redis DB?

Hlavní typy dat podporované ve výchozím nastavení:

  • řetězce (jako text nebo binární kód o maximální velikosti 512 MB),
  • bitová pole a pole (umožňují provádět bitové operace),
  • hashovací tabulky (ukládají seznamy polí a hodnot),
  • seznamy (uspořádané kolekce hodnot řetězců),
  • sady, včetně uspořádaných (kolekce jedinečných prvků),
  • streamování (pro ukládání informací z protokolů),
  • geodata (geografické souřadnice),
  • HyperLogLog (strukturované informace pro stanovení pravděpodobnosti nalezení určitých prvků v souborech dat).

Jazyková podpora Redis

Systém podporuje téměř všechny oblíbené programovací jazyky, včetně Pythonu, Golangu, rodiny C, Javy, Ruby, Perlu a také PHP a JavaScript.

Konfigurace Redis

Redis DB lze nasadit různými způsoby. Zde je popis hlavních řešení nebo konfigurací Redis.

Jedna instance databáze Redis

Toto použití Redis je vhodné pro ty, kteří potřebují organizovat omezené úložiště: obvykle malou databázi pro aplikaci. Nasazená instance Redis v tomto případě pomůže organizovat ukládání do mezipaměti, což bude mít pozitivní vliv na výkon aplikace. Pokud to prostředky serveru umožňují, je Redis obvykle nasazen na stejné kapacitě jako aplikace.

Mezi nevýhody tohoto přístupu patří snížení odolnosti proti chybám systému (zejména v případě, že neexistuje žádná další relační databáze). Pokud jsou v databázi Redis problémy, může být přístup k aplikaci obtížný.

Redis HA

Zkratka HA znamená High Availability, tedy zvýšená dostupnost. Toto schéma zahrnuje dva nebo více uzlů: master a slave a jejich synchronizace je realizována pomocí replikace. Takový systém může výrazně zvýšit svou odolnost proti chybám, protože neexistuje jediný bod selhání, jako v předchozí verzi s jedním DBMS.

V důsledku toho jsou poruchy velmi rychle eliminovány, a to i prostřednictvím jejich automatické detekce a schématu obnovy systému. A díky spolehlivým komunikačním kanálům je eliminována ztráta dat.

O replikaci dat v databázi Redis

Replikace znamená duplikaci dat, která jsou odesílána a zaznamenávána všemi uzly systému, což výrazně snižuje riziko ztráty dat. Díky replikaci se také zvyšuje výkon a rychlost služby, protože replikovaná data jsou dostupná pro čtení z libovolného uzlu v systému.

Redis Sentinel

Sentinel, přidaný do DBMS od verze 2.4, je služba pro vytváření distribuovaných systémů a sledování stavu jejich uzlů. Toto řešení lze zvolit, když se replikace provádí v nepřítomnosti plnohodnotného clusteru, jehož prvky jsou spolehlivě propojeny. Sentinel funguje jako takový odkaz.

Sentinel procesy jsou spuštěny, když dojde ke ztrátě komunikace mezi uzly. Kromě toho uzly Sentinel také provádějí funkce, jako je obnova služby po selhání, odesílání upozornění a také konfigurace systému: hlásí, která instance Redis je aktuálně hlavní.

Cluster Redis

Cluster, který byl přidán do Redis 3.0, je navržen pro horizontální škálování systému, kdy je zatížení rovnoměrně rozloženo po celém úložišti. Klasické schéma založené na clusteru se skládá z několika hlavních a několika podřízených uzlů s daty distribuovanými mezi všechny uzly systému. A ke sledování stavu systému se obvykle používá protokol Gossip.

Jedním z hlavních rysů Redis Cluster je jeho provozní mechanismus: je radikálně odlišný od mechanismu používaného ve schématech HA a Sentinel. Pokud je to replikace, tak zde je to sharding nebo sharding. Sharding je segmentace dat, která jsou v této podobě rovnoměrně rozdělena mezi prvky shluku. To vám umožní výrazně snížit zatížení úložiště.

Gossip Protocol

Pomocí protokolu je monitorován stav systémových uzlů pracujících pomocí mechanismu sharding. Pokud jeden z hlavních uzlů přestane reagovat, Gossip převede svá práva na jeden z podřízených uzlů. Díky tomu se výrazně zvyšuje odolnost proti poruchám systému jako celku.

Trvalé ukládání dat v Redis

Redis DBMS není určen pro trvalé ukládání dat. Faktem je, že prioritními úkoly Redisu není spolehlivost úložiště, ale organizace vysokorychlostního a nepřetržitého přístupu k datům. Pro spolehlivé ukládání dat proto zvažte řešení kompatibilní s Redis. Mohou to být klasické relační databáze – PostgreSQL, MySQL nebo Oracle.

Modely zálohování dat pro Redis: soubory RDB a AOF

Uživatelé Redis doporučují používat v produkci jak zálohování dat, tak vestavěné nástroje/modely zálohování DBMS.

Existují tři takové modely:

  • RDB soubory. Jedná se o použití snapshotů – pravidelných snímků stavu úložiště (časové intervaly jsou nastaveny v konfiguraci). Hlavní nevýhoda tohoto schématu: pokud Redis havaruje v intervalu mezi snímky, data budou ztracena.
  • Soubory AOF (Append Only File).. Spolehlivější způsob organizace ukládání dat, protože soubory AOF jsou nezávislé protokoly pro záznam příkazů pro obnovu. Redis standardně zapisuje data na disk každou sekundu, což umožňuje minimální ztrátu informací v případě selhání.
  • RDB a AOF. Kombinace těchto dvou modelů je nejspolehlivějším řešením, ale budete muset obětovat určitou rychlost jako cenu za stabilitu. Všimněte si také, že když je systém restartován, Redis použije soubory AOF.

Vyzkoušejte předpřipravené databáze Redis v cloudu

— 30 ​​% na cloudové databáze — úspora času a peněz.

Jak funguje ukládání dat v Redis: vytváření procesních vidlí

Fork je vytvoření nového procesu v systému zkopírováním nadřazeného procesu. A tyto procesy se pak mohou vzájemně ovlivňovat. Přetížení systému je zabráněno sdílením paměti pomocí principu Copy-On-Write. V důsledku toho se další paměť přiděluje pouze tehdy, když dojde k nějakým změnám v procesu, ale množství této paměti je nevýznamné.

Porovnání Redis s úložištěm Memcached

Hlavním konkurentem Redis je Memcached DBMS, který se objevil o 6 let dříve.

“Slušný” věk je hlavním důvodem omezení Memcachedu. Na rozdíl od Redis toto úložiště nepodporuje pokročilé datové struktury, snímky, replikaci, některé typy dat (například geodata) a má řadu dalších omezení.

Na druhou stranu, Memcached je vícevláknové úložiště, zatímco Redis není, což dává prvnímu určité výkonnostní výhody. Díky dostupnosti pokročilých nástrojů pro manipulaci s daty je však pro většinu projektů Redis vhodnější než použití Memcached.

Příklady databáze Redis

Díky novým modelům datových úložišť je záběr Redis široký. Zde je několik oblastí, kde je toto úložiště žádané:

  • Strojové učení. Moderní modely strojového učení pracují s velkými objemy dat a musí být rychle vytvořeny a nasazeny. Redis poskytuje úložiště dat v paměti, což umožňuje vysokorychlostní výkon modelů strojového učení.
  • Analytika v reálném čase. Příklady takové analýzy zahrnují cílenou reklamu, systémy doporučení na sociálních sítích a data shromážděná ze zařízení IoT. Redis je kompatibilní s různými streamovacími systémy (například Apache Kafka, Amazon Kinesis) a poskytuje vysokou rychlost zpracování dat (latence ne více než několik ms).
  • ukládání do mezipaměti. In-memory cache výrazně zvyšuje rychlost a výkon jakékoli databáze (jak SQL, tak NoSQL) nebo aplikace. Redis poskytuje vysokorychlostní přístup k datům uloženým v mezipaměti bez nutnosti navyšovat kapacitu serveru.
  • Úložiště relace. Data relací, včetně uživatelských profilů, nastavení, stavů, mohou snížit rychlost aplikace. Redis tento problém řeší ukládáním těchto dat do mezipaměti.
  • Systémy řazení do front v instant messengerech a chatech. Redis je jednovláknová databáze, takže příkazy jsou zpracovávány pouze v určitém pořadí. Díky tomu je vhodný pro budování systému řazení do front.
  • Streamování médií. Díky svým schopnostem přenosu dat v reálném čase Redis zlepšuje schopnost CDN vysílat mediální obsah. Výsledkem je, že sítě pro doručování obsahu umožňují simultánní přenos video streamů milionům uživatelů.

Redis se také používá pro práci s geoprostorovými daty, analýzu prodeje a chování zákazníků a klientů a filtrování obsahu. Kromě toho se toto úložiště využívá v sociálních sítích pro toky zpráv a pro propojení dat s uživatelskými profily.

Redis v cloudových databázích Selectel

Mezi hotovými databázovými clustery, které Selectel podporuje, je Redis. Cluster Redis verze 6 můžete vytvořit během několika minut.

Zjistěte více o tom, jak fungují cloudové databáze a kdo potřebuje Redis:

  • Jak používat cloudové databáze Redis
  • Redis: jak pracovat, kde používat, jaká omezení (video)
  • Cloudové databáze: co to je?
  • Začínáme s cloudovými databázemi

Závěr

Redis nabízí vysokou rychlost zpracování dat ukládáním dat do paměti RAM. Díky tomu je tento DBMS jedním z nejlepších řešení pro systémy a aplikace s velkými objemy dat, které k nim vyžadují nepřetržitý přístup.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button