Programavimas

„Redis 6“: didelės spartos duomenų bazė, talpykla ir pranešimų tarpininkas

Kaip ir daugelis, jūs galite galvoti apie Redį kaip tik apie talpyklą. Šis požiūris yra pasenęs.

Iš esmės „Redis“ yra „NoSQL“ atminties duomenų struktūros saugykla, kuri gali išlikti diske. Jis gali veikti kaip duomenų bazė, talpykla ir pranešimų tarpininkas. Redis turi įmontuotą replikaciją, „Lua“ scenarijus, LRU iškeldinimą, operacijas ir skirtingus disko atkaklumo lygius. Tai užtikrina aukštą prieinamumą per „Redis Sentinel“ ir automatinį skaidymą su „Redis Cluster“.

Pagrindinis „Redis“ duomenų modelis yra pagrindinės vertės, tačiau palaikoma daugybė skirtingų reikšmių: eilutės, sąrašai, rinkiniai, rūšiuojami rinkiniai, maišos, srautai, „HyperLogLogs“ ir „Bitmaps“. „Redis“ taip pat palaiko geoerdvines rodykles su spindulio užklausomis ir srautais.

[Taip pat apie tai, kaip Redis subraižė ir niežėjo - visam laikui pakeitė duomenų bazes]

Norėdami atidaryti „Redis“ šaltinį, „Redis Enterprise“ prideda papildomo greičio, patikimumo ir lankstumo funkcijas, taip pat debesų duomenų bazę kaip paslaugą. „Redis Enterprise“ skalė yra tiesiška iki šimtų milijonų operacijų per sekundę, turi aktyvųjį ir aktyvųjį pasaulinį paskirstymą su vietine vėlavimo trukme, siūlo „Redis on Flash“, kad palaikytų didelius duomenų rinkinius diskų bazės duomenų bazės infrastruktūros kaina, ir teikia 99,999% veikimo laiką pagal pastatytą - ilgaamžiškumu ir vienos skaitmens sekundžių perjungimu.

Be to, „Redis Enterprise“ išplečia pagrindinę „Redis“ funkciją, kad palaikytų bet kokį duomenų modeliavimo metodą su tokiais moduliais kaip „RediSearch“, „RedisGraph“, „RedisJSON“, „RedisTimeSeries“ ir „RedisAI“, ir leidžia atlikti operacijas moduliuose ir tarp jų bei pagrindinėje dalyje. Visa tai teikiama išlaikant duomenų bazės vėlavimą ne ilgiau kaip vieną milisekundę.

„Core Redis“ funkcijos ir naudojimo atvejai

Ką reiškia, kad „Redis“ dabar gali veikti kaip duomenų bazė, talpykla ir pranešimų tarpininkas? Ir kokie yra tų vaidmenų naudojimo atvejai?

Talpykla yra klasikinė Redis funkcija. Iš esmės Redis sėdi priešais diske esančią duomenų bazę ir išsaugo užklausas bei rezultatus; programa pirmiausia patikrina, ar „Redis“ talpykloje nėra saugomų rezultatų, ir klausia disko duomenų bazėje rezultatų, kurių šiuo metu nėra talpykloje. Atsižvelgiant į tai, kad „Redis“ atsako dažnis nesiekia milisekundės, tai paprastai yra didelis laimėjimas taikant programą. Galiojimo laikmatis ir LRU (pastaruoju metu naudojamas) iškeldinimas iš „Redis“ talpyklos padeda palaikyti talpyklą ir efektyviai naudoti atmintį.

sesijų parduotuvė yra svarbi šiuolaikinių interneto programų dalis. Tai patogi vieta saugoti informaciją apie vartotoją ir jos sąveiką su programa. Internetinio ūkio architektūroje norint, kad sesijų parduotuvė būtų talpinama tiesiai žiniatinklio serveryje, vartotojas turi būti priverstas „prilipti“ prie to paties užpakalinio serverio būsimoms užklausoms. Diskų duomenų bazės naudojimas sesijų saugykloje nereikalauja susieti sesijos su vienu žiniatinklio serveriu, tačiau įvedamas papildomas delsos šaltinis. Naudojant „Redis“ (ar bet kurią kitą greitai atmintyje esančią duomenų bazę) kaip seansų saugyklą, dažnai gaunama mažo delsos, didelio pralaidumo žiniatinklio programų architektūra.

Redis gali veikti kaip a pranešimų brokeris naudojant tris skirtingus mechanizmus, o vienas iš svarbiausių „Redis“ kaip pranešimų brokerio naudojimo atvejų yra klijai tarp mikro paslaugų. „Redis“ turi nedidelį skelbimo / prenumeratos pranešimų mechanizmą, kuris palengvina pranešimus apie gaisro užmiršimą, bet negali veikti, kai paskirties tarnyba neklauso. Kad pastovesnė, į Kafką panaši pranešimų eilė, Redis naudoja srautus, kurie yra laiko žymos užsakytos raktų ir vertės poros viename rakte. „Redis“ taip pat palaiko dvigubai susietus elementų, saugomų viename klaviše, sąrašus, kurie yra naudingi kaip „first-in / first-out“ (FIFO) eilė. „Microsoft“ paslaugos gali ir dažnai naudoja „Redis“ kaip talpyklą, taip pat kaip pranešimų tarpininką, nors talpykla turėtų veikti atskirame „Redis“ egzemplioriuje iš pranešimų eilės.

Pagrindinis replikavimas leidžia „Redis“ mastelį keisti nenaudojant „Redis Enterprise“ versijos klasterių technologijos. „Redis“ replikacijoje naudojamas lyderio sekėjo modelis (dar vadinamas pagrindiniu vergu), kuris pagal nutylėjimą yra asinchroninis. Klientai gali priversti sinchroninį replikavimą naudodami komandą WAIT, tačiau net ir dėl to Redis nėra nuoseklus visose kopijose.

„Redis“ turi serverio „Lua“ scenarijus, leidžiančius programuotojams išplėsti duomenų bazę nerašant C modulių ar kliento pusės kodo. Pagrindinės „Redis“ operacijos leidžia klientui deklaruoti komandų seką kaip nepertraukiamą vienetą, naudojant MULTI ir EXEC komandas, kad apibrėžtų ir paleistų seką. Tai yra ne tas pats, kas reliaciniai sandoriai su grįžimais.

„Redis“ turi skirtingus disko patvarumo lygius, kuriuos vartotojas gali pasirinkti. RDB („Redis“ duomenų bazės failas) atkaklumas tam tikrais intervalais daro momentines duomenų bazės nuotraukas. AOF (only app-file file) atkaklumas registruoja kiekvieną serverio gautą rašymo operaciją. Norėdami užtikrinti maksimalų duomenų saugumą, galite naudoti tiek RDB, tiek AOF patvarumą.

„Redis Sentinel“, kuri pati yra paskirstyta sistema, užtikrina „Redis“ prieinamumą. Tai stebi pagrindinius ir kopijų egzempliorius, praneša, jei kažkas negerai, ir automatinį perjungimą, jei pagrindinis nustoja veikti. Tai taip pat tarnauja kaip konfigūracijos teikėjas klientams.

„Redis Cluster“ suteikia galimybę paleisti „Redis“ diegimą, kai duomenys automatiškai suskaidomi į kelis „Redis“ mazgus. „Redis Cluster“ taip pat suteikia tam tikrą prieinamumą pertvarų metu, nors klasteris nustos veikti, jei dauguma meistrų taps nepasiekiami.

Kaip jau minėjau anksčiau, „Redis“ yra raktų vertės parduotuvė, palaikanti eilutes, sąrašus, rinkinius, rūšiuojamus rinkinius, maišas, srautus, „HyperLogLogs“ ir „Bitmaps“ kaip reikšmes. Vienas iš paprasčiausių ir dažniausiai naudojamų atvejų yra sveikųjų skaičių reikšmių naudojimas kaip skaitikliai. Tam pagrįsti INCR (prieaugis), DECR (mažinimas) ir kitos pavienės operacijos yra atominės, todėl saugios kelių klientų aplinkoje. Redis'e, kai manipuliuojama klavišais, jie bus automatiškai sukurti, jei jų dar nėra.

> SET jungtys 10

Gerai

> INCR jungtys

(sveikas skaičius) 11

> INCR jungtys

(sveikas skaičius) 12

> DEL jungtys

(sveikas skaičius) 1

> INCR jungtys

(sveikas skaičius) 1

> INCRBY jungtys 100

(sveikas skaičius) 101

> DECR jungtys

(sveikas skaičius) 100

> DECRBY jungtys 10

(sveikas skaičius) 90

Kiti vertybių struktūrų tipai taip pat turi savo pavyzdžių „Try Redis“ pamokoje. Pamoka buvo atliekama priežiūros metu, kai pats išbandžiau; Tikiuosi, kad tai greitai bus išspręsta, nes „Redis Labs“ įsitraukė į tai, kas iš pradžių buvo bendruomenės pastanga.

„Redis“ yra keletas papildomų modulių, įskaitant (mažėjančia populiarumo tvarka) neuroninio tinklo modulį, viso teksto paiešką, SQL, JSON duomenų tipą ir diagramų duomenų bazę. Modulių licencijas nustato autoriai. Kai kurie moduliai, dirbantys su „Redis“, visų pirma yra „Redis Enterprise“ moduliai.

Redis Enterprise patobulinimai

Naudodama „shared-nothing“ sankaupos architektūrą, „Redis Enterprise“ teikia begalinį tiesinį mastelį, netaikydama netiesinių pridėtinių išlaidų išplėstinėje architektūroje. Norėdami išnaudoti kelių branduolių kompiuterio architektūros pranašumus, viename sankaupos mazge galite dislokuoti kelis „Redis“ egzempliorius. „Redis Enterprise“ pademonstravo šimtus milijonų operacijų per sekundę mastą su penkiais devyniais (99,999%) veikimo laikas. „Redis Enterprise“ atlieka automatinį dalijimą ir balansavimą, išlaikydama mažą delsą ir didelę operacinių apkrovų našumą.

„Redis Enterprise“ siūlo aktyvųjį aktyvųjį paskirstymą visuotinai paskirstytoms duomenų bazėms, leidžiančias vienu metu skaityti ir rašyti tame pačiame duomenų rinkinyje keliose geografinėse vietose. Kad tai būtų efektyviau, „Redis Enterprise“ gali naudoti nekonfliktuojamus replikuotų duomenų tipus (CRDT), kad išlaikytų duomenų nuoseklumą ir prieinamumą. „Riak“ ir „Azure Cosmos DB“ yra dar dvi „NoSQL“ duomenų bazės, palaikančios CRDT.

Nors yra daug akademinės literatūros apie CRDT, aš pripažįstu, kad ne iki galo suprantu, kaip ir kodėl jie veikia. Trumpa santrauka jie taip daro, kad CRDT gali išspręsti neatitikimus be įsikišimo, naudodami matematiškai išvestą taisyklių rinkinį. CRDT yra vertingi didelės apimties duomenims, kuriems reikalinga bendra būsena, ir gali naudoti geografiškai išsklaidytus serverius, kad sumažintų vartotojų vėlavimą.

Vienas iš pagrindinių „Redis“ ir „Redis Enterprise“ skirtumų yra tas, kad „Redis Enterprise“ atsieja duomenų kelią nuo grupių valdymo. Tai pagerina abiejų komponentų veikimą. Duomenų kelias yra pagrįstas daugybe nulinio vėlavimo, kelių sričių tarpinių serverių, esančių kiekviename iš sankaupos mazgų, kad užmaskuotų pagrindinį sistemos sudėtingumą. Klasterių tvarkytuvė yra valdymo funkcija, suteikianti tokias galimybes kaip pertvarkymas, balansavimas, automatinis perjungimas, supratimas apie stelažą, duomenų bazės parengimas, išteklių valdymas, duomenų patvarumo konfigūravimas, atsarginė kopija ir atkūrimas. Kadangi sankaupos tvarkytuvas yra visiškai atsietas nuo duomenų kelio komponentų, jo programinės įrangos komponentų pakeitimai neturi įtakos duomenų kelio komponentams.

„Redis on Flash“ yra „Redis Enterprise“ funkcija, kuri gali smarkiai sumažinti „Redis“ aparatinės įrangos kainą. Užuot mokėję per nosį už terabaitus operatyviosios atminties ar ribodami „Redis“ duomenų rinkinių dydį, galite naudoti „Redis on Flash“, kad dažnai pasiekiamus karštus duomenis įdėtumėte į atmintį ir šaltesnes reikšmes į „Flash“ arba nuolatinę atmintį, pvz., „Intel Optane DC“.

„Redis Enterprise“ moduliai apima „RedisGraph“, „RedisJSON“, „RedisTimeSeries“, „RedisBloom“, „RediSearch“ ir „RedisGears“. Visi „Redis Enterprise“ moduliai taip pat veikia su atvirojo kodo „Redis“.

Kas naujo „Redis 6“?

„Redis 6“ yra didelis leidimas tiek atvirojo kodo, tiek „Redis Enterprise“ komercinei versijai. Spektaklio naujienos yra srieginių įvesties / išvesties naudojimas, kuris „Redis 6“ du kartus pagerina greitį, palyginti su „Redis 5“ (kuris nebuvo niekingas). Tai perkeliama į „Redis Enterprise“, kuri turi papildomų klasterių greičio patobulinimų, kaip aprašyta aukščiau.

Pridėjus prieigos kontrolės sąrašus (ACL), „Redis 6“ suteikiama vartotojų samprata ir kūrėjai gali rašyti saugesnį kodą. „Redis Enterprise 6“ remiasi ACL, kad pasiūlytų vaidmenimis pagrįstą prieigos valdymą (RBAC), kuris yra patogesnis programuotojams ir DBA.

Pagrindinės naujos „Redis 6“ funkcijos

„Redis 6.0“ atvirasis šaltinis

  • Prieigos kontrolės sąrašai (ACL)
  • Pagerinti iškeldinimai
  • Srieginis I / O
  • RESP3 protokolas

„Redis Enterprise 6.0“

  • Vaidmenimis pagrįsta prieigos kontrolė (RBAC)
  • Išplėsti aktyvus-aktyvus
  • „HyperLogLog“
  • Srautai

„Redis Enterprise 6.0“ papildo srautų duomenų tipą aktyviose ir aktyviose duomenų bazėse. Tai leidžia užtikrinti aukštą prieinamumą ir mažą vėlavimą tuo pačiu metu skaitant ir rašant srautu realiuoju laiku ir iš jo keliuose duomenų centruose keliose geografinėse vietose.

„RedisGears“ yra dinamiška sistema, leidžianti kūrėjams rašyti ir vykdyti funkcijas, kurios įgyvendina duomenų srautus „Redis“. Tai leidžia vartotojams rašyti „Python“ scenarijus, kad jie veiktų „Redis“ viduje, ir suteikia galimybę naudotis daugeliu atvejų, įskaitant užrašymą („Redis“ veikia kaip diske esančios duomenų bazės sąsaja), realaus laiko duomenų apdorojimą, srautinį ir įvykių apdorojimą, operacijas. kurie kerta duomenų struktūras ir modelius bei dirbtiniu intelektu pagrįstus sandorius.

„RedisAI“ yra variklio modelis, veikiantis „Redis“ viduje. Tai gali daryti išvadas su „PyTorch“, „TensorFlow“ ir ONNX modeliais. „RedisAI“ gali veikti su procesoriais ir GPU ir įgalina tokius naudojimo atvejus kaip sukčiavimo nustatymas, anomalijų nustatymas ir suasmeninimas.

„Redis“ diegimas

„Redis“ galite įdiegti atsisiųsdami ir sukomponuodami šaltinio paketą arba ištraukdami „Docker“ vaizdą iš „Docker Hub“. Redis gali būti sudarytas ir naudojamas Linux, MacOS, OpenBSD, NetBSD ir FreeBSD. Šaltinio kodo saugykla yra „GitHub“. „Windows“ sistemoje galite paleisti „Redis“ „Docker“ talpykloje arba „Windows“ posistemėje, skirtoje „Linux“ (WSL), kuriai reikalinga „Windows 10“.

„Redis Enterprise“ galite įdiegti „Linux“ arba „Docker“ talpyklose. „Linux“ atsisiuntimai pateikiami kaip dvejetainiai paketai (DEB arba RPM, atsižvelgiant į „Linux“ skonį) ir „Bash“ apvalkalo scenarijai, skirti klasteriams įdiegti. Scenarijai patikrina, ar reikia keturių branduolių ir 15 GB RAM, kad būtų galima įdiegti.

„Redis Enterprise Cloud“

Greičiausias būdas įdiegti „Redis Enterprise“ yra ne visai įdiegti, o greičiau paleisti „Redis Enterprise Cloud“. Kai pats bandžiau tai peržiūrėti, iš pradžių gavau „Redis 5“ egzempliorių; Teko paprašyti atnaujinimo į „Redis 6“.

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