Programiranje

Redis 6: hitri posrednik baz podatkov, predpomnilnika in sporočil

Tako kot mnogi lahko tudi za Redis mislite, da je le predpomnilnik. To stališče je zastarelo.

V bistvu je Redis shramba podatkovne strukture NoSQL v pomnilniku, ki lahko ostane na disku. Lahko deluje kot baza podatkov, predpomnilnik in posrednik sporočil. Redis ima vgrajeno kopiranje, Lua skriptiranje, izselitev LRU, transakcije in različne stopnje obstojnosti na disku. Omogoča visoko razpoložljivost prek sistema Redis Sentinel in samodejno razdeljevanje z grozdom Redis.

Osrednji podatkovni model Redis je vrednost ključ-vrednost, vendar je podprtih veliko različnih vrst vrednosti: nizi, seznami, nabori, razvrščeni nabori, razpršitve, tokovi, HyperLogLogs in bitne slike. Redis podpira tudi geoprostorske indekse z radijskimi poizvedbami in tokovi.

[Tudi o: Kako se Redis praska in srbi - in za vedno spreminja zbirke podatkov]

Za odprtokodni Redis Redis Enterprise dodaja funkcije za dodatno hitrost, zanesljivost in prilagodljivost ter zbirko podatkov v oblaku kot storitev. Redis Enterprise se linearno prilagodi na stotine milijonov operacij na sekundo, ima aktivno-aktivno globalno distribucijo z lokalno zakasnitvijo, ponuja Redis na Flash-u, da podpira velike nabore podatkov po infrastrukturnih stroških diskovne baze podatkov in zagotavlja 99,999% uptime na podlagi vgrajene -v trajnosti in enomestnih sekundah preklopa.

Poleg tega Redis Enterprise razširja osnovno funkcionalnost Redisa, da podpira katero koli metodo modeliranja podatkov z moduli, kot so RediSearch, RedisGraph, RedisJSON, RedisTimeSeries in RedisAI, in omogoča izvajanje operacij med moduli in jedrom ter med njimi. Vse to je zagotovljeno, medtem ko je zakasnitev baze podatkov manjša od ene milisekunde.

Osnovne funkcije in primeri uporabe Redisa

Kaj pomeni, da lahko Redis zdaj deluje kot posrednik baz podatkov, predpomnilnika in sporočil? In kakšne primere uporabe te vloge podpirajo?

predpomnilnik je klasična funkcija Redisa. V bistvu Redis sedi pred diskovno bazo podatkov in shranjuje poizvedbe in rezultate; aplikacija najprej preveri, ali so v predpomnilniku Redis shranjeni rezultati, in poizveduje po diskovni bazi podatkov o rezultatih, ki trenutno niso v predpomnilniku. Glede na stopnjo odziva v milisekundah Redisa je to običajno velika zmaga za delovanje aplikacije. Časovniki izteka in izselitev LRU (vsaj nedavno uporabljeno) iz predpomnilnika Redis pomagata ohranjati predpomnilnik in učinkovito uporabljati pomnilnik.

The trgovina sej je pomemben del sodobnih spletnih aplikacij. To je priročno mesto za shranjevanje informacij o uporabniku in njenih interakcijah z aplikacijo. V arhitekturi spletne farme gostovanje sejne trgovine neposredno na spletnem strežniku zahteva, da se uporabnik »drži« istega zalednega strežnika za prihodnje zahteve, kar lahko omeji izravnalnik obremenitve. Uporaba baze podatkov na disku za shrambo sej odpravlja potrebo po vezavi seje na en spletni strežnik, vendar uvaja dodaten vir zakasnitve. Uporaba Redisa (ali katere koli druge hitre pomnilniške baze podatkov) kot shrambe sej pogosto povzroči arhitekturo spletnih aplikacij z nizko zakasnitvijo in visoko zmogljivostjo.

Redis lahko deluje kot a posrednik sporočil uporabo treh različnih mehanizmov, eden od pomembnih primerov uporabe Redisa kot posrednika sporočil pa je, da deluje kot lepilo med mikro storitvami. Redis ima mehanizem obveščanja o objavi / naročnini, ki omogoča sprožitev sporočil, vendar ne more delovati, ko ciljna storitev ne posluša. Za bolj obstojno, Kafki podobno vrsto sporočil Redis uporablja tokove, ki so v enem ključu urejeni pari ključ-vrednost, urejeni s časovnim žigom. Redis podpira tudi dvojno povezane sezname elementov, shranjenih z enim samim ključem, ki so uporabni kot čakalna vrsta prvi vhod / izhod (FIFO). Mikroservice lahko in pogosto uporabljajo Redis kot predpomnilnik in ga uporabljajo tudi kot posrednika sporočil, čeprav bi se predpomnilnik moral izvajati v ločenem primerku Redisa iz čakalne vrste sporočil.

Osnovna replikacija omogoča Redisu, da se razširi, ne da bi uporabljal tehnologijo grozdov različice Redis Enterprise. Replikacija Redis uporablja model sledilca voditeljev (imenovan tudi glavni-podrejeni), ki je privzeto asinhron. Naročniki lahko prisilijo sinhrono replikacijo z ukazom WAIT, vendar tudi zaradi tega Redis ni dosleden v vseh replikah.

Redis ima strežniški skript Lua, ki programerjem omogoča razširitev baze podatkov brez pisanja modulov C ali kode na strani odjemalca. Osnovne transakcije Redis omogočajo odjemalcu, da zaporedje ukazov prijavi kot neprekinjeno enoto z uporabo ukazov MULTI in EXEC za definiranje in zagon zaporedja. To je ne enako kot relacijske transakcije z vračili.

Redis ima različne stopnje trajnosti na disku, ki jih lahko izbere uporabnik. Vztrajanje RDB (datoteka baze podatkov Redis) v določenih intervalih naredi trenutne posnetke baze podatkov. Vztrajanje AOF (datoteka samo z dodatki) beleži vsako operacijo pisanja, ki jo prejme strežnik. Za največjo varnost podatkov lahko uporabite obstojnost RDB in AOF.

Redis Sentinel, sam distribuiran sistem, zagotavlja visoko razpoložljivost za Redis. Omogoča spremljanje primerov glavne in replike, obvestilo, če je kaj narobe, in samodejni preklop, če glavni preneha delovati. Služi tudi kot ponudnik konfiguracije za stranke.

Redis Cluster ponuja način za zagon namestitve Redis, kjer se podatki samodejno razdelijo na več vozlišč Redis. Redis Cluster zagotavlja tudi določeno stopnjo razpoložljivosti med particijami, čeprav bo gruča prenehala delovati, če večina nadrejenih ne bo na voljo.

Kot sem že omenil, je Redis shramba ključ-vrednost, ki kot vrednosti podpira Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs in Bitmaps. Eden najpreprostejših in najpogostejših primerov uporabe je uporaba števcev kot števcev. V podporo temu so INCR (prirastek), DECR (znižanje) in druge posamezne operacije atomske in zato varne v okolju z več odjemalci. V Redisu se bodo z manipulacijo s tipkami samodejno ustvarile, če že ne obstajajo.

> SET povezave 10

v redu

> INCR povezave

(celo število) 11

> INCR povezave

(celo število) 12

> DEL povezave

(celo število) 1

> INCR povezave

(celo število) 1

> INCRBY povezave 100

(celo število) 101

> DECR povezave

(celo število) 100

> DECRBY povezave 10

(celo število) 90

Tudi druge vrste vrednostnih struktur imajo svoje primere v vadnici Try Redis. Vadnica je bila v vzdrževanju, ko sem jo tudi sam preizkusil; Pričakujem, da bo to kmalu popravljeno, saj se je Redis Labs vključil v prvotno prizadevanje skupnosti.

Obstajajo številni dodatni moduli za Redis, vključno (v padajočem vrstnem redu priljubljenosti) modul nevronske mreže, iskanje po celotnem besedilu, SQL, podatkovni tip JSON in podatkovna baza grafov. Licence za module določajo avtorji. Nekateri moduli, ki delujejo z Redisom, so predvsem moduli za Redis Enterprise.

Izboljšave Redis Enterprise

Redis Enterprise z arhitekturo grozdov v skupni rabi ponuja neskončno linearno skaliranje, ne da bi v pomanjšani arhitekturi nalagal nelinearne splošne stroške. Na enem vozlišču gruče lahko razmestite več primerkov Redis, da v celoti izkoristite večjedrno računalniško arhitekturo. Redis Enterprise je s petimi devetkami (99,999%) uptime izkazoval, da doseže stotine milijonov operacij na sekundo. Redis Enterprise izvaja samodejno ostrenje in uravnoteženje, hkrati pa ohranja nizko zakasnitev in veliko pretočnost za transakcijske obremenitve.

Redis Enterprise ponuja aktivno-aktivno uvajanje za globalno distribuirane zbirke podatkov, kar omogoča hkratno branje in pisanje na isti nabor podatkov na več geolokacijah. Da bi bilo to učinkovitejše, lahko Redis Enterprise za ohranjanje doslednosti in razpoložljivosti podatkov uporabi brezkonfliktne replicirane vrste podatkov (CRDT). Riak in Azure Cosmos DB sta dve drugi zbirki podatkov NoSQL, ki podpirata CRDT.

Čeprav obstaja obsežna akademska literatura o CRDT, priznam, da ne razumem popolnoma, kako in zakaj delujejo. Kratek povzetek kaj naredijo, da lahko CRDT neskladnosti rešijo brez posredovanja z uporabo matematično pridobljenega nabora pravil. CRDT-ji so dragoceni za obsežne podatke, ki zahtevajo skupno stanje, in lahko uporabljajo geografsko razpršene strežnike, da zmanjšajo zakasnitev za uporabnike.

Ena glavnih razlik med Redisom in Redis Enterprise je ta, da Redis Enterprise ločuje podatkovno pot od upravljanja gruč. To izboljša delovanje obeh komponent. Podatkovna pot temelji na več proxyjih z več navoji z nizko zakasnitvijo, ki se nahajajo na vsakem vozlišču grozda, da prikrijejo osnovno zapletenost sistema. Upravitelj grozdov je upravljalna funkcija, ki ponuja zmožnosti, kot so ponovno ostrenje, ponovno uravnoteženje, samodejni preklop na sekundo, ozaveščanje o racku, zagotavljanje baze podatkov, upravljanje virov, konfiguracija trajnosti podatkov ter varnostno kopiranje in obnovitev. Ker je upravitelj gruč v celoti ločen od komponent podatkovne poti, spremembe njegovih komponent programske opreme ne vplivajo na komponente podatkovne poti.

Redis na Flash je funkcija Redis Enterprise, ki lahko drastično zniža stroške strojne opreme za Redis. Namesto da bi morali plačevati po terabajtih RAM-a ali omejevati velikost naborov podatkov Redis, lahko z Redisom na Flash namestite pogosto dostopne vroče podatke v pomnilnik in hladnejše vrednosti v Flash ali trajni pomnilnik, kot je Intel Optane DC.

Moduli Redis Enterprise vključujejo RedisGraph, RedisJSON, RedisTimeSeries, RedisBloom, RediSearch in RedisGears. Vsi moduli Redis Enterprise delujejo tudi z odprtokodnim sistemom Redis.

Kaj je novega v Redisu 6?

Redis 6 je velika izdaja tako za odprtokodno različico kot za komercialno različico Redis Enterprise. Novica o zmogljivosti je uporaba vhodno / izhodnih navojev, kar Redisu 6 dvakrat izboljša hitrost v primerjavi z Redisom 5 (kar ni bilo nič slabega). To se prenese v Redis Enterprise, ki ima dodatne izboljšave hitrosti za grozde, kot je opisano zgoraj.

Dodajanje seznamov nadzora dostopa (ACL) daje Redis 6 koncept uporabnikov, razvijalcem pa omogoča bolj varno pisanje kode. Redis Enterprise 6 temelji na ACL-jih in ponuja nadzor dostopa na podlagi vlog (RBAC), ki je bolj primeren za programerje in DBA-je.

Glavne novosti v Redis 6

Redis 6.0 odprtokodna

  • Seznami za nadzor dostopa (ACL)
  • Izboljšane deložacije
  • I / O z navojem
  • Protokol RESP3

Redis Enterprise 6.0

  • Nadzor dostopa na podlagi vlog (RBAC)
  • Podaljšanje aktivno-aktivno
  • HyperLogLog
  • Potoki

Redis Enterprise 6.0 dodaja podporo za vrsto podatkov Streams v aktivno aktivnih podatkovnih bazah. To omogoča visoko razpoložljivost in majhno zakasnitev med hkratnim branjem in pisanjem v tok iz realnega časa in iz njega v več podatkovnih centrov na več geografskih lokacijah.

RedisGears je dinamičen okvir, ki razvijalcem omogoča pisanje in izvajanje funkcij, ki v Redisu izvajajo pretoke podatkov. Uporabnikom omogoča pisanje skriptov Python za zagon znotraj Redisa in omogoča številne primere uporabe, vključno z zakasnitvijo (Redis deluje kot čelna stran zbirke podatkov na disku), obdelavo podatkov v realnem času, pretakanje in obdelavo dogodkov, operacije ki prekrivajo podatkovne strukture in modele ter transakcije, ki jih vodi AI.

RedisAI je model za servisiranje motorjev, ki deluje znotraj Redisa. Sklepa lahko z modeli PyTorch, TensorFlow in ONNX. RedisAI lahko deluje na CPE in GPU ter omogoča primere uporabe, kot so odkrivanje prevar, odkrivanje nepravilnosti in personalizacija.

Namestitev Redisa

Redis lahko namestite tako, da prenesete in sestavite izvorno tarball ali tako, da povlečete sliko Dockerja iz Docker Hub-a. Redis je mogoče prevajati in uporabljati v sistemih Linux, MacOS, OpenBSD, NetBSD in FreeBSD. Skladišče izvorne kode je na GitHubu. V sistemu Windows lahko Redis zaženete bodisi v vsebniku Docker bodisi v podsistemu Windows za Linux (WSL), za kar je potreben Windows 10.

Redis Enterprise lahko namestite v Linux ali v vsebnike Docker. Prenosi za Linux so v obliki binarnih paketov (DEB ali RPM, odvisno od okusa Linuxa) in skriptov lupine Bash za namestitev gruče. Skripti preverijo, ali so potrebna štiri jedra in 15 GB RAM-a za namestitev.

Redis Enterprise Cloud

Najhitrejši način namestitve Redis Enterprise je, da ga sploh ne namestite, temveč ga zaženete v oblaku Redis Enterprise. Ko sem to preizkusil sam za namene pregleda, sem sprva prejel primer Redis 5; Moral sem prositi za nadgradnjo na Redis 6.

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