Programovanie

Redis 6: Vysokorýchlostná databáza, vyrovnávacia pamäť a sprostredkovateľ správ

Rovnako ako veľa iných, aj vy si môžete predstaviť Redis iba ako kešku. Toto hľadisko je zastarané.

Redis je v podstate úložisko dátových štruktúr NoSQL v pamäti, ktoré môže pretrvávať na disku. Môže fungovať ako databáza, vyrovnávacia pamäť a sprostredkovateľ správ. Redis má zabudovanú replikáciu, skriptovanie Lua, vysťahovanie LRU, transakcie a rôzne úrovne perzistencie na disku. Poskytuje vysokú dostupnosť prostredníctvom Redis Sentinel a automatické vytváranie oddielov pomocou Redis Cluster.

Základný dátový model Redis je kľúč - hodnota, ale podporovaných je veľa rôznych druhov hodnôt: reťazce, zoznamy, množiny, zoradené množiny, hašovanie, prúdy, HyperLogLogs a bitmapy. Redis podporuje aj geopriestorové indexy s polomerovými dotazmi a prúdmi.

[Tiež na: Ako Redis škrabal a svrbel - a navždy zmenil databázy]]

Redis Enterprise pridáva k otvorenému zdroju Redis funkcie pre vyššiu rýchlosť, spoľahlivosť a flexibilitu, ako aj cloudovú databázu ako službu. Redis Enterprise škáluje lineárne na stovky miliónov operácií za sekundu, má aktívnu-aktívnu globálnu distribúciu s lokálnou latenciou, ponúka Redis on Flash na podporu veľkých súborov dát za cenu infraštruktúry diskovej databázy a poskytuje 99,999% dobu prevádzky na základe postaveného -v odolnosti a výpadku jednej číslice sekundy.

Ďalej Redis Enterprise rozširuje základné funkcie Redis o podporu akejkoľvek metódy modelovania údajov o moduly ako RediSearch, RedisGraph, RedisJSON, RedisTimeSeries a RedisAI a umožňuje vykonávanie operácií naprieč a medzi modulmi a jadrom. To všetko je poskytované pri zachovaní latencie databázy pod jednu milisekundu.

Základné funkcie a prípady použitia Redis

Čo to znamená, že Redis teraz môže fungovať ako databáza, vyrovnávacia pamäť a sprostredkovateľ správ? A aké sú prípady použitia, ktoré tieto roly podporujú?

Cache je klasická funkcia Redisu. Redis v podstate sedí pred databázou na disku a ukladá dotazy a výsledky; aplikácia najskôr skontroluje uložené výsledky v pamäti cache Redis a vyhľadá v diskovej databáze výsledky, ktoré sa momentálne nenachádzajú v pamäti cache. Vzhľadom na mieru odozvy Redisu na milisekundy je to obvykle veľká výhra pre výkon aplikácií. Časovače vypršania platnosti a vysťahovanie LRU (najmenej nedávno použité) z vyrovnávacej pamäte Redis pomáhajú udržiavať aktuálnu vyrovnávaciu pamäť a efektívne využívať pamäť.

The obchod s reláciami je dôležitou súčasťou moderných webových aplikácií. Je to vhodné miesto na uchovávanie informácií o používateľovi a jeho interakciách s aplikáciou. V architektúre webovej farmy musí hosťovanie úložiska relácií priamo na webovom serveri vyžadovať, aby sa používateľ pri budúcich požiadavkách „držal“ rovnakého servera typu back-end, čo môže obmedziť nástroj na vyrovnávanie zaťaženia. Používanie diskovej databázy pre úložisko relácií odstraňuje potrebu viazať reláciu na jeden webový server, ale zavádza ďalší zdroj latencie. Používanie Redis (alebo inej rýchlej databázy v pamäti) ako úložiska relácií má často za následok nízku latenciu a vysokú priepustnosť architektúry webových aplikácií.

Redis môže fungovať ako a sprostredkovateľ správ pomocou troch rôznych mechanizmov a jedným z dôležitých prípadov použitia pre Redis ako sprostredkovateľa správ je pôsobiť ako lepidlo medzi mikroslužbami. Redis má mechanizmus upozornení na publikovanie / prihlásenie s nízkou režijnou hodnotou, ktorý uľahčuje odosielanie správ typu „zabudni a zabudni“, ale nemôže fungovať, keď cieľová služba nepočúva. Na trvalejší front správ typu Kafka používa Redis prúdy, čo sú páry kľúč-hodnota v jednom kľúči zoradené podľa časovej pečiatky. Redis podporuje aj dvojnásobne prepojené zoznamy prvkov uložených v jednom kľúči, ktoré sú užitočné ako front typu FIFO (first-in / first-out). Mikroslužby môžu a často aj používajú Redis ako medzipamäť a tiež ju používajú ako sprostredkovateľa správ, aj keď by cache mala bežať v samostatnej inštancii Redis z frontu správ.

Základná replikácia umožňuje Redisu škálovať bez použitia klastrovej technológie verzie Redis Enterprise. Replikácia Redis používa model vodcu a nasledovníka (nazývaný tiež master-slave), ktorý je predvolene asynchrónny. Klienti môžu vynútiť synchrónnu replikáciu pomocou príkazu WAIT, ale ani to nezabezpečuje konzistenciu Redis v replikách.

Redis má skriptovanie Lua na strane servera, ktoré umožňuje programátorom rozšíriť databázu bez písania C modulov alebo kódu na strane klienta. Základné transakcie Redis umožňujú klientovi deklarovať postupnosť príkazov ako neprerušiteľnú jednotku pomocou príkazov MULTI a EXEC na definovanie a spustenie postupnosti. Toto je nie to isté ako relačné transakcie s vrátením zmien.

Redis má rôzne úrovne perzistencie na disku, ktoré si môže používateľ zvoliť. Perzistencia RDB (redisový databázový súbor) robí v stanovených intervaloch snímky databázy z času na čas. Perzistencia AOF (súbor iba na pridanie) zaznamenáva každú operáciu zápisu prijatú serverom. Pre maximálnu bezpečnosť údajov môžete použiť perzistenciu RDB aj AOF.

Redis Sentinel, sám distribuovaný systém, poskytuje vysokej dostupnosti pre Redis. Robí monitorovanie inštancií hlavného servera a replík, upozornenie na prípadné problémy a automatické prepnutie po zlyhaní, ak hlavný server prestane fungovať. Slúži tiež ako poskytovateľ konfigurácie pre klientov.

Redis Cluster poskytuje spôsob spustenia inštalácie Redis, kde sú dáta automaticky rozdelené do viacerých uzlov Redis. Klaster Redis poskytuje určitý stupeň dostupnosti aj počas oddielov, hoci klaster prestane pracovať, ak bude väčšina hlavných serverov nedostupná.

Ako som už spomínal, Redis je úložisko kľúčov a hodnôt, ktoré ako hodnoty podporuje reťazce, zoznamy, sady, zoradené sady, hašovanie, streamy, HyperLogLogs a bitmapy. Jedným z najjednoduchších a najbežnejších prípadov použitia je použitie celočíselných hodnôt ako počítadiel. Na podporu toho sú INCR (prírastok), DECR (zmenšenie) a ďalšie jednotlivé operácie atómové, a preto bezpečné v prostredí viacerých klientov. V Redis sa pri manipulácii s kľúčmi automaticky vytvoria, ak ešte neexistujú.

> NASTAVIŤ pripojenia 10

Ok

> Pripojenia INCR

(celé číslo) 11

> Pripojenia INCR

(celé číslo) 12

> DEL pripojenia

(celé číslo) 1

> Pripojenia INCR

(celé číslo) 1

> Pripojenia INCRBY 100

(celé číslo) 101

> Pripojenia DECR

(celé číslo) 100

> DECRBY pripojenia 10

(celé číslo) 90

Ostatné druhy hodnotových štruktúr majú tiež svoje vlastné príklady v tutoriále Try Redis. Keď som si to sám vyskúšal, výučba prechádzala údržbou; Očakávam, že sa to čoskoro napraví, pretože spoločnosť Redis Labs sa zapojila do pôvodne komunitného úsilia.

Existuje mnoho doplnkových modulov pre Redis, vrátane (v zostupnom poradí podľa obľúbenosti) modul neurálnej siete, fulltextové vyhľadávanie, SQL, dátový typ JSON a databáza grafov. Licencie pre moduly nastavujú autori. Niektoré z modulov, ktoré pracujú s Redis, sú primárne moduly pre Redis Enterprise.

Vylepšenia Redis Enterprise

Pomocou klastrovej architektúry zdieľaného ničoho poskytuje Redis Enterprise nekonečné lineárne škálovanie bez toho, aby ukladal akékoľvek nelineárne réžie v zmenšenej architektúre. Môžete nasadiť viac inštancií Redis na jeden uzol klastra, aby ste mohli naplno využívať výhody architektúry viacerých jadier počítača. Spoločnosť Redis Enterprise preukázala škálovateľnosť na stovky miliónov operácií za sekundu s piatimi deviatimi (99,999%) funkčnosťou. Redis Enterprise vykonáva automatické opätovné rozdelenie a vyváženie pri zachovaní nízkej latencie a vysokej priepustnosti pre transakčné zaťaženia.

Redis Enterprise ponúka aktívne a aktívne nasadenie pre globálne distribuované databázy, čo umožňuje súčasné operácie čítania a zápisu na rovnakom súbore údajov na viacerých geografických miestach. Aby to bolo efektívnejšie, Redis Enterprise môže na zabezpečenie konzistencie a dostupnosti údajov používať bezkonfliktné replikované dátové typy (CRDT). Riak a Azure Cosmos DB sú ďalšie dve databázy NoSQL, ktoré podporujú CRDT.

Aj keď existuje rozsiahla akademická literatúra o CRDT, pripúšťam, že úplne nerozumiem tomu, ako alebo prečo fungujú. Krátke zhrnutie čo robia to tak, že CRDT môžu vyriešiť nezrovnalosti bez zásahu pomocou matematicky odvodenej sady pravidiel. CRDT sú cenné pre veľké objemy dát, ktoré vyžadujú zdieľaný stav, a môžu využívať geograficky rozptýlené servery na zníženie latencie používateľov.

Jedným z hlavných rozdielov medzi Redis a Redis Enterprise je, že Redis Enterprise oddeľuje cestu údajov od správy klastrov. To zlepšuje činnosť oboch komponentov. Dátová cesta je založená na viacerých proxy s viacerými vláknami s nulovou latenciou, ktoré sú umiestnené na každom z uzlov klastra, aby zakryli základnú zložitosť systému. Správca klastrov je riadiaca funkcia, ktorá poskytuje funkcie ako resharding, rebalancing, auto-failover, rack-aware, poskytovanie databáz, správa zdrojov, konfigurácia vytrvalosti údajov a zálohovanie a obnova. Pretože je manažér klastra úplne oddelený od komponentov dátovej cesty, zmeny v jeho softvérových komponentoch neovplyvnia komponenty dátovej cesty.

Redis on Flash je funkcia Redis Enterprise, ktorá môže drasticky znížiť náklady na hardvér pre Redis. Namiesto toho, aby ste museli platiť nosom za terabajty pamäte RAM alebo obmedzovať veľkosť svojich dátových súborov Redis, môžete pomocou Redis on Flash umiestniť často prístupné horúce údaje do pamäte a chladnejšie hodnoty do Flash alebo trvalej pamäte, ako je Intel Optane DC.

Medzi moduly Redis Enterprise patria RedisGraph, RedisJSON, RedisTimeSeries, RedisBloom, RediSearch a RedisGears. Všetky moduly Redis Enterprise pracujú aj s otvoreným zdrojom Redis.

Čo je nové v Redis 6?

Redis 6 je veľké vydanie pre open source verziu aj komerčnú verziu Redis Enterprise. Novinkou v oblasti výkonu je použitie závitových I / O, čo dáva Redis 6 dvojnásobné zvýšenie rýchlosti oproti Redis 5 (čo nebolo o ničom). To sa prenesie na Redis Enterprise, ktorá má pre klastre ďalšie vylepšenia rýchlosti, ako je popísané vyššie.

Pridanie zoznamov riadenia prístupu (ACL) dáva Redis 6 koncepciu používateľov a umožňuje vývojárom písať bezpečnejší kód. Redis Enterprise 6 stavia na ACL a ponúka riadenie prístupu na základe rolí (RBAC), ktoré je vhodnejšie pre programátorov a DBA.

Hlavné nové funkcie v Redis 6

Redis 6.0 otvorený zdroj

  • Zoznamy riadenia prístupu (ACL)
  • Vylepšené vysťahovanie
  • Závitové I / O
  • Protokol RESP3

Redis Enterprise 6.0

  • Kontrola prístupu na základe rolí (RBAC)
  • Rozšírenie aktívne-aktívne
  • HyperLogLog
  • Prúdy

Redis Enterprise 6.0 pridáva podporu pre dátový typ Streams v databázach active-active. To umožňuje vysokú dostupnosť aj nízku latenciu pri súčasnom čítaní a zápise do a z toku v reálnom čase vo viacerých dátových centrách na viacerých geografických miestach.

RedisGears je dynamický rámec, ktorý umožňuje vývojárom zapisovať a spúšťať funkcie, ktoré implementujú dátové toky v Redis. Umožňuje používateľom písať skripty Pythonu, ktoré sa majú spúšťať vo vnútri Redis, a umožňuje množstvo prípadov použitia vrátane zápisu (Redis funguje ako front-end k diskovej databáze), spracovania údajov v reálnom čase, streamovania a spracovania udalostí, operácií ktoré krížia dátové štruktúry a modely a transakcie založené na umelej inteligencii.

RedisAI je model slúžiaci motoru, ktorý beží vo vnútri Redis. Môže vykonávať závery s modelmi PyTorch, TensorFlow a ONNX. RedisAI môže bežať na procesoroch a GPU a umožňuje prípady použitia, ako je detekcia podvodov, detekcia anomálií a personalizácia.

Inštaluje sa Redis

Redis môžete nainštalovať stiahnutím a kompiláciou zdrojového tarballu alebo stiahnutím obrazu Dockeru z centra Docker Hub. Redis je možné kompilovať a používať v systémoch Linux, MacOS, OpenBSD, NetBSD a FreeBSD. Úložisko zdrojových kódov je na GitHub. V systéme Windows môžete Redis spustiť buď v kontajneri Docker, alebo pod Windows Subsystem for Linux (WSL), ktorý vyžaduje Windows 10.

Redis Enterprise môžete nainštalovať na Linux alebo do kontajnerov Docker. Súbory na stiahnutie pre systém Linux sa dodávajú vo forme binárnych balíkov (DEB alebo RPM v závislosti na chuti systému Linux) a skriptov shellu Bash na inštaláciu klastra. Skripty kontrolujú požadované štyri jadrá a 15 GB RAM pre inštaláciu.

Redis Enterprise Cloud

Najrýchlejším spôsobom, ako nainštalovať Redis Enterprise, je neinštalovať ho, ale radšej ho spustiť v Redis Enterprise Cloud. Keď som to sám vyskúšal na účely kontroly, pôvodne som dostal inštanciu Redis 5; Musel som požiadať o upgrade na Redis 6.

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