Programování

Redis 6: Vysokorychlostní databáze, mezipaměť a zprostředkovatel zpráv

Stejně jako mnoho jiných si můžete představit Redis pouze jako mezipaměť. Tento pohled je zastaralý.

Redis je v podstatě úložiště datové struktury NoSQL v paměti, které může přetrvávat na disku. Může fungovat jako databáze, mezipaměť a zprostředkovatel zpráv. Redis má integrovanou replikaci, skriptování Lua, vystěhování LRU, transakce a různé úrovně perzistence na disku. Poskytuje vysokou dostupnost prostřednictvím Redis Sentinel a automatického dělení s Redis Cluster.

Základní datový model Redis je klíč-hodnota, ale podporuje se mnoho různých druhů hodnot: řetězce, seznamy, sady, seřazené sady, hash, streamy, HyperLogLogs a bitmapy. Redis také podporuje geoprostorové indexy s poloměrovými dotazy a streamy.

[Také na: Jak Redis škrábal a svědí - a navždy změnil databáze]

Chcete-li otevřít zdroj Redis, Redis Enterprise přidává funkce pro další rychlost, spolehlivost a flexibilitu, stejně jako cloudovou databázi jako službu. Redis Enterprise rozšiřuje lineárně na stovky milionů operací za sekundu, má aktivní-aktivní globální distribuci s místní latencí, nabízí Redis on Flash pro podporu velkých datových sad za cenu infrastruktury diskové databáze a poskytuje 99,999% provozuschopnosti na základě postaveného -v odolnosti a převzetí služeb při selhání jedné číslice sekundy.

Redis Enterprise dále rozšiřuje základní funkčnost Redis o podporu jakékoli metody modelování dat o moduly jako RediSearch, RedisGraph, RedisJSON, RedisTimeSeries a RedisAI a umožňuje provádění operací napříč a mezi moduly a jádrem. To vše je poskytováno při zachování latence databáze pod jednu milisekundu.

Základní funkce a případy použití Redis

Co to znamená, že Redis nyní může fungovat jako databáze, mezipaměť a zprostředkovatel zpráv? A jaké jsou případy použití, které tyto role podporují?

Mezipaměti je klasická funkce Redis. Redis v zásadě sedí před databází na disku a ukládá dotazy a výsledky; aplikace nejprve zkontroluje uložené výsledky v mezipaměti Redis a dotazuje se na diskovou databázi na výsledky, které aktuálně nejsou v mezipaměti. Vzhledem k míře odezvy Redisu v řádu milisekund je to pro výkon aplikace obvykle velká výhra. Časovače vypršení platnosti a vyřazení LRU (nejméně nedávno použité) z mezipaměti Redis pomáhají udržovat mezipaměť aktuální a efektivně využívat paměť.

The úložiště relací je důležitou součástí moderních webových aplikací. Je to vhodné místo k uchovávání informací o uživateli a jeho interakcích s aplikací. V architektuře webové farmy hostování úložiště relací přímo na webovém serveru vyžaduje, aby se uživatel pro budoucí požadavky „přichytil“ ke stejnému serveru typu back-end, což může omezit nástroj pro vyrovnávání zatížení. Použití diskové databáze pro úložiště relací odstraňuje potřebu vázat relaci na jeden webový server, ale zavádí další zdroj latence. Použití Redis (nebo jakékoli jiné rychlé databáze v paměti) jako úložiště relací často vede k architektuře webových aplikací s nízkou latencí a vysokou propustností.

Redis může fungovat jako a zprostředkovatel zpráv pomocí tří různých mechanismů a jedním z důležitých případů použití pro Redis jako zprostředkovatele zpráv je fungovat jako lepidlo mezi mikroslužbami. Redis má mechanismus oznámení publikování / odběru s nízkou režií, který usnadňuje spouštění a zapomenutí zpráv, ale nemůže fungovat, když cílová služba neposlouchá. Pro trvalejší frontu zpráv typu Kafka používá Redis streamy, což jsou páry klíč – hodnota seřazené podle časového razítka v jednom klíči. Redis také podporuje dvojnásobně propojené seznamy prvků uložených na jednom klíči, které jsou užitečné jako fronta FIFO (first-in / first-out). Mikroslužby mohou a často používají Redis jako mezipaměť a také ji používají jako zprostředkovatele zpráv, ačkoli mezipaměť by měla běžet v samostatné instanci Redis z fronty zpráv.

Základní replikace umožňuje Redisu škálovat bez použití technologie clusteru verze Redis Enterprise. Replikace Redis používá model vůdce-následovník (nazývaný také master-slave), který je ve výchozím nastavení asynchronní. Klienti mohou vynutit synchronní replikaci pomocí příkazu WAIT, ale ani to nedělá Redis konzistentní napříč replikami.

Redis má skriptování Lua na straně serveru, které umožňuje programátorům rozšířit databázi bez psaní modulů C nebo kódu na straně klienta. Základní transakce Redis umožňují klientovi deklarovat posloupnost příkazů jako nepřerušitelnou jednotku pomocí příkazů MULTI a EXEC k definování a spuštění posloupnosti. Tohle je ne stejné jako relační transakce s odvoláním.

Redis má různé úrovně perzistence na disku, které si uživatel může vybrat. Vytrvalost RDB (soubor databáze Redis) pořizuje snímky databáze v určitém čase v určených intervalech. Perzistence AOF (soubor pouze pro připojení) zaznamenává každou operaci zápisu přijatou serverem. Pro maximální bezpečnost dat můžete použít trvalost RDB i AOF.

Redis Sentinel, sám distribuovaný systém, poskytuje Redis vysokou dostupnost. Provádí monitorování instancí hlavní a repliky, upozornění, pokud je něco špatně, a automatické převzetí služeb při selhání, pokud hlavní přestane fungovat. Slouží také jako poskytovatel konfigurace pro klienty.

Cluster Redis poskytuje způsob spuštění instalace Redis, kde jsou data automaticky rozdělena na více uzlů Redis. Redis Cluster také poskytuje určitý stupeň dostupnosti během oddílů, i když klastr přestane fungovat, pokud nebude k dispozici většina předloh.

Jak jsem již zmínil dříve, Redis je úložiště klíčů a hodnot, které podporuje jako hodnoty Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs, and Bitmaps. Jedním z nejjednodušších a nejběžnějších případů použití je použití celočíselných hodnot jako čítačů. Na podporu toho jsou INCR (přírůstek), DECR (zmenšení) a další jednotlivé operace atomické, a proto bezpečné v prostředí více klientů. V Redis se při manipulaci s klíči automaticky vytvoří, pokud již neexistují.

> NASTAVIT připojení 10

OK

> Připojení INCR

(celé číslo) 11

> Připojení INCR

(celé číslo) 12

> DEL připojení

(celé číslo) 1

> Připojení INCR

(celé číslo) 1

> INCRBY připojení 100

(celé číslo) 101

> Připojení DECR

(celé číslo) 100

> DECRBY připojení 10

(celé číslo) 90

Ostatní druhy hodnotových struktur mají také své vlastní příklady v kurzu Try Redis. Výukový program prošel údržbou, když jsem to sám vyzkoušel; Očekávám, že to bude brzy napraveno, protože Redis Labs se zapojila do původně komunitního úsilí.

Existuje mnoho doplňkových modulů pro Redis, včetně (v sestupném pořadí popularity) modul neurální sítě, fulltextové vyhledávání, SQL, datový typ JSON a databáze grafů. Licence pro moduly jsou stanoveny autory. Některé z modulů, které pracují s Redis, jsou primárně moduly pro Redis Enterprise.

Vylepšení Redis Enterprise

Pomocí clusterové architektury sdílené nic Redis Enterprise poskytuje nekonečné lineární škálování, aniž by ukládal jakékoli nelineární režijní náklady ve škálované architektuře. Můžete nasadit více instancí Redis na jeden uzel clusteru, abyste plně využili architekturu vícejádrového počítače. Redis Enterprise prokázal škálování na stovky milionů operací za sekundu s pěti devíti (99,999%) provozuschopností. Redis Enterprise provádí automatické opětovné dělení a vyvážení při zachování nízké latence a vysoké propustnosti transakčních zátěží.

Redis Enterprise nabízí aktivní a aktivní nasazení pro globálně distribuované databáze, což umožňuje simultánní operace čtení a zápisu na stejné datové sadě na více geografických místech. Aby to bylo efektivnější, může Redis Enterprise používat bezkonfliktní replikované datové typy (CRDT) k udržení konzistence a dostupnosti dat. Riak a Azure Cosmos DB jsou další dvě databáze NoSQL, které podporují CRDT.

I když existuje rozsáhlá akademická literatura o CRDT, přiznávám, že nechápu úplně, jak nebo proč fungují. Krátké shrnutí co dělají to, že CRDT mohou vyřešit nekonzistence bez zásahu pomocí matematicky odvozené sady pravidel. CRDT jsou cenné pro velkoobjemová data, která vyžadují sdílený stav, a mohou využívat geograficky rozptýlené servery ke snížení latence pro uživatele.

Jedním z hlavních rozdílů mezi Redis a Redis Enterprise je, že Redis Enterprise odděluje datovou cestu od správy klastrů. To zlepšuje činnost obou komponent. Cesta dat je založena na více proxy s nulovou latencí a více vlákny, které jsou umístěny na každém z uzlů clusteru, aby maskovaly základní složitost systému. Správce klastrů je řídící funkce, která poskytuje funkce jako resharding, rebalancing, auto-failover, rack-aware, zřizování databází, správa prostředků, konfigurace persistence dat a zálohování a obnova. Protože správce clusteru je zcela oddělen od komponent datové cesty, změny jeho softwarových komponent neovlivní komponenty datové cesty.

Redis on Flash je funkce Redis Enterprise, která může drasticky snížit náklady na hardware pro Redis. Místo toho, abyste museli platit nosem za terabajty RAM nebo omezit velikost svých datových souborů Redis, můžete použít Redis ve Flashi k umístění často přístupných horkých dat do paměti a chladnějších hodnot do Flash nebo trvalé paměti, jako je Intel Optane DC.

Mezi moduly Redis Enterprise patří RedisGraph, RedisJSON, RedisTimeSeries, RedisBloom, RediSearch a RedisGears. Všechny moduly Redis Enterprise také pracují s otevřeným zdrojovým kódem Redis.

Co je nového v Redis 6?

Redis 6 je velké vydání, a to jak pro open source verzi, tak pro komerční verzi Redis Enterprise. Novinkou v oblasti výkonu je použití vláknových I / O, což dává Redisu 6 dvojnásobné zlepšení rychlosti oproti Redisu 5 (což nebyl žádný šup). To se přenáší do Redis Enterprise, která má další vylepšení rychlosti pro klastry, jak je popsáno výše.

Přidání seznamů řízení přístupu (ACL) dává Redis 6 koncept uživatelů a umožňuje vývojářům psát bezpečnější kód. Redis Enterprise 6 staví na ACL a nabízí řízení přístupu na základě rolí (RBAC), které je pro programátory a DBA výhodnější.

Hlavní nové funkce v Redis 6

Otevřený zdroj Redis 6.0

  • Seznamy řízení přístupu (ACL)
  • Vylepšené vystěhování
  • Závitové I / O
  • Protokol RESP3

Redis Enterprise 6.0

  • Řízení přístupu na základě rolí (RBAC)
  • Rozšíření aktivní-aktivní
  • HyperLogLog
  • Proudy

Redis Enterprise 6.0 přidává podporu pro datový typ Streams v aktivně aktivních databázích. To umožňuje jak vysokou dostupnost, tak nízkou latenci při současném čtení a zápisu do az proudu v reálném čase ve více datových centrech ve více geografických umístěních.

RedisGears je dynamický rámec, který umožňuje vývojářům psát a spouštět funkce, které implementují datové toky v Redis. Umožňuje uživatelům psát skripty Pythonu, které se spouští uvnitř Redis, a umožňuje řadu případů použití, včetně zápisu (Redis funguje jako front-end databáze založené na disku), zpracování dat v reálném čase, streamování a zpracování událostí, operace které překračují datové struktury a modely a transakce založené na AI.

RedisAI je model sloužící motoru, který běží uvnitř Redis. Může provádět odvození u modelů PyTorch, TensorFlow a ONNX. RedisAI může běžet na CPU a GPU a umožňuje případy použití, jako je detekce podvodů, detekce anomálií a personalizace.

Instalace Redis

Redis můžete nainstalovat stažením a kompilací zdrojového tarballu nebo stažením obrazu Dockeru z centra Docker Hub. Redis lze kompilovat a používat v systémech Linux, MacOS, OpenBSD, NetBSD a FreeBSD. Úložiště zdrojového kódu je na GitHubu. V systému Windows můžete Redis spustit buď v kontejneru Docker, nebo pod Windows Subsystem for Linux (WSL), který vyžaduje Windows 10.

Redis Enterprise můžete nainstalovat na Linux nebo do kontejnerů Docker. Stahování systému Linux přicházejí ve formě binárních balíčků (DEB nebo RPM v závislosti na chuti systému Linux) a skriptů prostředí Bash pro instalaci clusteru. Skripty kontrolují požadovaná čtyři jádra a 15 GB RAM pro instalaci.

Redis Enterprise Cloud

Nejrychlejším způsobem instalace Redis Enterprise není jeho instalace vůbec, ale jeho spuštění v cloudu Redis Enterprise. Když jsem to sám vyzkoušel pro účely kontroly, zpočátku jsem obdržel instanci Redis 5; Musel jsem požádat o upgrade na Redis 6.

$config[zx-auto] not found$config[zx-overlay] not found