Redis 6: Brzi posrednik baza podataka, predmemorije i poruka

Kao i mnogi, i o Redisu biste mogli misliti kao o samo predmemoriji. To je gledište zastarjelo.

U osnovi, Redis je NoSQL spremište strukture podataka u memoriji koje može postojati na disku. Može funkcionirati kao baza podataka, predmemorija i posrednik poruka. Redis ima ugrađenu replikaciju, skriptu Lua, izbacivanje LRU-a, transakcije i različite razine postojanosti na disku. Pruža visoku dostupnost putem Redis Sentinela i automatsku particiju s Redis klasterom.

Jezgroviti model podataka Redis ključ je vrijednost, ali podržane su mnoge različite vrste vrijednosti: žice, popisi, skupovi, razvrstani skupovi, hashovi, potoci, HyperLogLogs i bitmape. Redis također podržava geoprostorne indekse s upitima radijusa i streamovima.

[Također o: Kako se Redis češao i svrbio - i zauvijek promijenio baze podataka]

Za otvoreni izvor Redis, Redis Enterprise dodaje značajke za dodatnu brzinu, pouzdanost i fleksibilnost, kao i bazu podataka u oblaku kao uslugu. Redis Enterprise se linearno skalira na stotine milijuna operacija u sekundi, ima aktivnu i aktivnu globalnu distribuciju s lokalnim kašnjenjem, nudi Redis na Flash-u da podržava velike skupove podataka po cijeni infrastrukture baze podataka na disku i osigurava 99,999% neprekidnog rada na temelju izgrađenih -u trajnosti i jednocifrenim sekundama preusmjeravanja.

Nadalje, Redis Enterprise proširuje osnovnu funkcionalnost Redisa kako bi podržao bilo koju metodu modeliranja podataka modulima kao što su RediSearch, RedisGraph, RedisJSON, RedisTimeSeries i RedisAI, i omogućuje izvršavanje operacija između modula i jezgre. Sve je to osigurano uz zadržavanje kašnjenja baze podataka ispod jedne milisekunde.

Osnovne značajke Redisa i slučajevi upotrebe

Što znači da Redis sada može funkcionirati kao posrednik baze podataka, predmemorije i poruka? A koje su slučajeve upotrebe te uloge podržane?

Predmemorija je klasična funkcija Redisa. U osnovi, Redis sjedi ispred baze podataka koja se temelji na disku i sprema upite i rezultate; aplikacija prvo provjerava u predmemoriji Redis ima li pohranjenih rezultata i pita bazu podataka zasnovanu na disku za rezultate koji trenutno nisu u predmemoriji. S obzirom na stopu odziva od milisekundi Redisa, ovo je obično velika pobjeda za izvedbu aplikacije. Tajmeri isteka i izbacivanje LRU-a (najmanje nedavno korišteno) iz predmemorije Redis pomažu u održavanju predmemorije trenutnom i učinkovitom korištenju memorije.

Trgovina sesija važan je dio modernih web aplikacija. To je prikladno mjesto za čuvanje podataka o korisniku i njezinim interakcijama s aplikacijom. U arhitekturi web farme, hosting trgovine sesija izravno na web poslužitelju zahtijeva da se korisnik "drži" istog pozadinskog poslužitelja za buduće zahtjeve, što može ograničiti uravnoteživač opterećenja. Korištenje diskovne baze podataka za spremište sesija uklanja potrebu za povezivanjem sesije na jedan web poslužitelj, ali uvodi dodatni izvor kašnjenja. Korištenje Redisa (ili bilo koje druge brze baze podataka u memoriji) kao spremišta sesija često rezultira arhitekturom web aplikacija s malim kašnjenjem i velikom propusnošću.

Redis može funkcionirati kao posrednik poruka koristeći tri različita mehanizma, a jedan od važnih slučajeva upotrebe Redisa kao posrednika poruka je djelovanje kao ljepilo između mikro usluga. Redis ima mehanizam za obavijesti o objavljivanju / pretplati s malim troškovima koji olakšava vatrene i zaboravne poruke, ali ne može raditi kada odredišna usluga ne sluša. Za postojaniji red poruka poput Kafke, Redis koristi streamove koji su parovi ključ / vrijednost poredani s vremenskim žigom u jednom ključu. Redis također podržava dvostruko povezane popise elemenata pohranjenih na jednom ključu, koji su korisni kao red za prvi ulaz / izlaz (FIFO). Mikroservisi mogu i često koriste Redis kao predmemoriju, kao i kao posrednik poruka, premda bi se predmemorija trebala izvoditi u zasebnoj instanci Redisa iz reda poruka.

Osnovna replikacija omogućuje Redisu skaliranje bez upotrebe klaster tehnologije verzije Redis Enterprise. Redis replikacija koristi model voditelja-sljedbenika (koji se naziva i master-slave), koji je prema zadanim postavkama asinkron. Klijenti mogu prisiliti sinkronu replikaciju pomoću naredbe WAIT, ali čak ni to ne čini Redis dosljednim na svim replikama.

Redis ima Lua skripte na poslužitelju, omogućavajući programerima da prošire bazu podataka bez pisanja C modula ili koda na strani klijenta. Osnovne Redisove transakcije omogućuju klijentu da deklarira slijed naredbi kao neprekinutu jedinicu, koristeći naredbe MULTI i EXEC za definiranje i pokretanje sekvence. To nije isto što i relacijske transakcije s povratima.

Redis ima različite razine postojanosti na disku koje korisnik može odabrati. RDB (Redis datoteka baze podataka) trajnost snima točke baze podataka u određenim intervalima. AOF (datoteka samo za dodavanje) trajnost bilježi svaku operaciju upisivanja koju primi poslužitelj. Za maksimalnu sigurnost podataka možete koristiti postojanost RDB-a i AOF-a.

Redis Sentinel, koji je i sam distribuirani sustav, pruža visoku dostupnost Redisa. Vrši nadzor nad instancama master-a i replike, obavijesti ako nešto nije u redu i automatskim preusmjeravanjem ako master prestane raditi. Također služi kao pružatelj konfiguracije za klijente.

Redis klaster pruža način za pokretanje Redisove instalacije gdje se podaci automatski razvrstavaju na više Redisovih čvorova. Redis klaster također pruža određeni stupanj dostupnosti tijekom particija, iako će klaster prestati raditi ako većina master-a postane nedostupna.

Kao što sam već spomenuo, Redis je trgovina ključem / vrijednosti koja kao vrijednosti podržava nizove, popise, skupove, razvrstane skupove, hashove, strujanja, HyperLogLogs i Bitmape. Jedan od najjednostavnijih i najčešćih slučajeva upotrebe je uporaba cjelobrojnih vrijednosti kao brojača. U prilog tome, INCR (prirast), DECR (umanjivanje) i druge pojedinačne operacije su atomske i stoga sigurne u okruženju s više klijenata. U Redisu, kada se manipulira tipkama, automatski će se stvoriti ako već ne postoje.

> SET veze 10

u redu

> INCR veze

(cijeli broj) 11

> INCR veze

(cijeli broj) 12

> DEL veze

(cijeli broj) 1

> INCR veze

(cijeli broj) 1

> INCRBY veze 100

(cijeli broj) 101

> DECR veze

(cijeli broj) 100

> DECRBY veze 10

(cijeli broj) 90

Ostale vrste vrijednosnih struktura također imaju svoje primjere u vodiču Try Redis. Vodič je bio na održavanju kad sam ga i sam probao; Očekujem da će to uskoro biti popravljeno, jer se Redis Labs uključio u ono što je izvorno bilo napor zajednice.

Postoji niz dodatnih modula za Redis, uključujući (u opadajućem redoslijedu popularnosti) modul neuronske mreže, pretraživanje cijelog teksta, SQL, JSON tip podataka i bazu podataka grafova. Licence za module postavljaju autori. Neki od modula koji rade s Redisom primarno su moduli za Redis Enterprise.

Poboljšanja Redis Enterprisea

Koristeći zajedničku arhitekturu klastera, Redis Enterprise pruža beskonačno linearno skaliranje bez nametanja bilo kakvih nelinearnih općih troškova u smanjenoj arhitekturi. Možete rasporediti više instanci Redisa na jednom čvoru klastera kako biste u potpunosti iskoristili višejezgrenu računalnu arhitekturu. Redis Enterprise pokazao je skaliranje na stotine milijuna operacija u sekundi uz pet devet (99,999%) vremena rada. Redis Enterprise vrši automatsko ponovno oštrenje i uravnoteženje uz održavanje niske latencije i velike propusnosti za transakcijska opterećenja.

Redis Enterprise nudi aktivno-aktivno postavljanje za globalno distribuirane baze podataka, omogućujući istodobne operacije čitanja i pisanja na istom skupu podataka na više geolokacija. Da bi to bilo učinkovitije, Redis Enterprise može koristiti replicirane tipove podataka (CRDT) bez sukoba kako bi održao dosljednost i dostupnost podataka. Riak i Azure Cosmos DB dvije su druge NoSQL baze podataka koje podržavaju CRDT-ove.

Iako postoji opsežna akademska literatura o CRDT-ovima, priznajem da ne razumijem u potpunosti kako i zašto rade. Kratki sažetak onoga što rade jest da CRDT-ovi mogu rješavati nedosljednosti bez intervencije, koristeći matematički izvedeni skup pravila. CRDT-ovi su vrijedni za velike količine podataka koji zahtijevaju zajedničko stanje i mogu koristiti zemljopisno raspršene poslužitelje kako bi smanjili kašnjenje za korisnike.

Jedna od glavnih razlika između Redisa i Redis Enterprisea je ta što Redis Enterprise razdvaja put podataka od upravljanja klasterima. To poboljšava rad obje komponente. Put podataka temelji se na višestrukim proxyjima s više navoja s nultom latencijom koji se nalaze na svakom od čvorova klastera kako bi prikrili temeljnu složenost sustava. Upravitelj klastera upravljačka je funkcija koja pruža mogućnosti kao što su ponovno ucjenjivanje, ponovno uravnoteženje, automatsko otkazivanje, osvještavanje stalaka, pružanje baze podataka, upravljanje resursima, konfiguracija postojanosti podataka te sigurnosno kopiranje i oporavak. Budući da je upravitelj klastera u potpunosti odvojen od komponenata putova podataka, promjene njegovih softverskih komponenata ne utječu na komponente putova podataka.

Redis na Bljesku je značajka Redis Enterprise koja može drastično smanjiti troškove hardvera za Redis. Umjesto da morate platiti terabajtima RAM-a ili ograničiti veličinu svojih skupova podataka Redis, možete koristiti Redis na Flashu da biste često pristupali vrućim podacima u memoriju i hladnije vrijednosti u Flash ili trajnoj memoriji, kao što je Intel Optane DC.

Moduli Redis Enterprise uključuju RedisGraph, RedisJSON, RedisTimeSeries, RedisBloom, RediSearch i RedisGears. Svi moduli Redis Enterprise također rade s Redisom otvorenog koda.

Što je novo u Redisu 6?

Redis 6 je veliko izdanje, kako za verziju otvorenog koda, tako i za komercijalnu verziju Redis Enterprise. Vijest o performansama je upotreba navoja I / O, što Redisu 6 daje dvostruko poboljšanje brzine u odnosu na Redis 5 (što nije bilo zaostalo). To se prenosi u Redis Enterprise, koji ima dodatna poboljšanja brzine za klastere, kao što je gore opisano.

Dodavanje popisa za kontrolu pristupa (ACL) daje Redis 6 koncept korisnika, a programerima omogućuje pisanje sigurnijeg koda. Redis Enterprise 6 temelji se na ACL-ima kako bi ponudio kontrolu pristupa zasnovanu na ulogama (RBAC), što je prikladnije za programere i DBA-e.

Glavne nove značajke u Redisu 6

Redis 6.0 otvoreni izvor

  • Popisi kontrole pristupa (ACL)
  • Poboljšane deložacije
  • I / O s navojem
  • Protokol RESP3

Redis Enterprise 6.0

  • Kontrola pristupa zasnovana na ulogama (RBAC)
  • Proširivanje aktivno-aktivno
  • HyperLogLog
  • Potoci

Redis Enterprise 6.0 dodaje podršku za tip podataka Streams u aktivno-aktivnim bazama podataka. To omogućuje visoku dostupnost i malu latenciju, istodobno čitajući i zapisujući u i iz streama u stvarnom vremenu u više podatkovnih centara na više zemljopisnih lokacija.

RedisGears je dinamički okvir koji programerima omogućuje pisanje i izvršavanje funkcija koje implementiraju protoke podataka u Redisu. Omogućava korisnicima pisanje Python skripti za pokretanje unutar Redisa i omogućuje brojne slučajeve upotrebe, uključujući zapisivanje (Redis djeluje kao prednji kraj baze podataka temeljenu na disku), obradu podataka u stvarnom vremenu, streaming i obradu događaja, operacije koji ukrštaju podatkovne strukture i modele i transakcije vođene umjetnom inteligencijom.

RedisAI je model za posluživanje modela koji radi unutar Redisa. Može izvoditi zaključke s modelima PyTorch, TensorFlow i ONNX. RedisAI može raditi na CPU-ima i GPU-ima i omogućuje slučajeve upotrebe kao što su otkrivanje prijevara, otkrivanje anomalija i personalizacija.

Instaliranje Redisa

Redis možete instalirati preuzimanjem i sastavljanjem izvornog tarbola ili povlačenjem Dockerove slike iz Docker Hub-a. Redis se može kompajlirati i koristiti na Linuxu, MacOS-u, OpenBSD-u, NetBSD-u i FreeBSD-u. Spremište izvornog koda nalazi se na GitHubu. U sustavu Windows možete pokrenuti Redis u spremniku Docker ili u sustavu Windows podsustav za Linux (WSL), koji zahtijeva Windows 10.

Redis Enterprise možete instalirati na Linux ili u Docker spremnike. Preuzimanja Linuxa dolaze u obliku binarnih paketa (DEB ili RPM, ovisno o okusu Linuxa) i skripti Bash shell za instalaciju klastera. Skripte provjeravaju jesu li potrebne četiri jezgre i 15 GB RAM-a za instalaciju.

Redis Enterprise Cloud

Najbrži način za instalaciju Redis Enterprisea je uopće ne instaliranje, već pokretanje u Redis Enterprise Cloudu. Kada sam to pokušao radi provjere, u početku sam dobio Redis 5 instancu; Morao sam zatražiti nadogradnju na Redis 6.