Programmēšana

Redis 6: ātrgaitas datu bāze, kešatmiņa un ziņojumu starpnieks

Tāpat kā daudzi, jūs varētu domāt par Redisu kā tikai par kešatmiņu. Šis viedoklis ir novecojis.

Būtībā Redis ir NoSQL atmiņā esoša datu struktūras krātuve, kas var saglabāties diskā. Tas var darboties kā datu bāze, kešatmiņa un ziņojumu starpnieks. Redisam ir iebūvēta replikācija, Lua skripti, LRU izlikšana, transakcijas un dažādi diskā noturības līmeņi. Tas nodrošina augstu pieejamību, izmantojot Redis Sentinel, un automātisku sadalīšanu ar Redis Cluster.

Redis pamatdatu modelis ir atslēgas vērtība, taču tiek atbalstīti daudz dažādu veidu veidi: virknes, saraksti, kopas, sakārtoti kopas, hašiši, straumes, HyperLogLogs un Bitmaps. Redis atbalsta arī ģeotelpiskos indeksus ar rādiusa vaicājumiem un straumēm.

[Arī par: Kā Redis saskrāpēja un niezēja - un uz visiem laikiem mainīja datubāzes]

Lai atvērtu pirmkoda Redis, Redis Enterprise pievieno funkcijas papildu ātrumam, uzticamībai un elastībai, kā arī mākoņa datu bāzi kā pakalpojumu. Redis Enterprise mērogo lineāri līdz simtiem miljonu operāciju sekundē, tam ir aktīvs-aktīvs globālais sadalījums ar vietējo latentumu, piedāvā Redis on Flash, lai atbalstītu lielas datu kopas par disku bāzes datu bāzes infrastruktūras izmaksām, un nodrošina 99,999% uptime, pamatojoties uz iebūvēto - izturībā un viena cipara sekunžu atteicē.

Turklāt Redis Enterprise paplašina Redis pamata funkcionalitāti, lai atbalstītu jebkuru datu modelēšanas metodi ar tādiem moduļiem kā RediSearch, RedisGraph, RedisJSON, RedisTimeSeries un RedisAI, un ļauj operācijas izpildīt gan moduļos, gan starp kodolu. Tas viss tiek nodrošināts, saglabājot datubāzes latentumu zem vienas milisekundes.

Core Redis funkcijas un lietošanas gadījumi

Ko tas nozīmē, ka Redis tagad var darboties kā datu bāze, kešatmiņa un ziņojumu starpnieks? Un kādus izmantošanas gadījumus šīs lomas atbalsta?

Kešatmiņa ir Redisa klasiskā funkcija. Būtībā Redis sēž uz diska balstītas datu bāzes priekšā un saglabā vaicājumus un rezultātus; lietojumprogramma vispirms pārbauda, ​​vai Redis kešatmiņā nav saglabātu rezultātu, un vaicā uz diska bāzē esošos rezultātus, kas pašlaik nav kešatmiņā. Ņemot vērā Redis reakcijas ātrumu zem milisekundes, tas parasti ir liels ieguvums lietojumprogrammu veiktspējā. Derīguma termiņa taimeri un LRU (vismazāk izmantotie) izlikšana no Redis kešatmiņas palīdz saglabāt kešatmiņu pašreizējo un efektīvi izmantot atmiņu.

The sesiju veikals ir svarīga mūsdienu tīmekļa lietojumprogrammu sastāvdaļa. Tā ir ērta vieta, kur glabāt informāciju par lietotāju un viņas mijiedarbību ar lietojumprogrammu. Tīmekļa fermas arhitektūrā sesiju veikala mitināšanai tieši tīmekļa serverī ir nepieciešams, lai lietotājs nākamajiem pieprasījumiem “pieliptu” pie tā paša aizmugures servera, kas var ierobežot slodzes līdzsvarotāju. Disku datu bāzes izmantošana sesiju veikalā novērš nepieciešamību saistīt sesiju ar vienu tīmekļa serveri, bet ievieš papildu latentuma avotu. Izmantojot Redis (vai jebkuru citu ātras atmiņas datu bāzi) kā sesiju krātuvi, bieži tiek izveidota zema latentuma, augstas caurlaidspējas tīmekļa lietojumprogrammu arhitektūra.

Redis var darboties kā a ziņojumu starpnieks izmantojot trīs dažādus mehānismus, un viens no svarīgākajiem Redisa kā ziņu starpnieka lietošanas gadījumiem ir darboties kā līme starp mikropakalpojumiem. Redis ir zemu pieskaitāmo publicēšanas / abonēšanas paziņošanas mehānisms, kas atvieglo ugunsgrēka un aizmirstības ziņojumus, bet nevar darboties, ja galamērķa pakalpojums neklausās. Lai pastāvīgāka, Kafkai līdzīga ziņojumu rinda, Redis izmanto straumes, kas ir laika zīmoga pasūtīti atslēgu vērtību pāri vienā atslēgā. Redis atbalsta arī divreiz saistītus elementu sarakstus, kas tiek glabāti vienā atslēgā, un tie ir noderīgi kā rinda “first-in / first-out” (FIFO). Mikropakalpojumi var un bieži izmanto Redis kā kešatmiņu, kā arī kā ziņojumu starpnieku, lai gan kešatmiņai vajadzētu darboties atsevišķā Redis instancē no ziņojumu rindas.

Pamata replikācija ļauj Redis mērogot, neizmantojot Redis Enterprise versijas kopu tehnoloģiju. Redis replikācijā tiek izmantots līdera-sekotāja modelis (saukts arī par galveno-vergu), kas pēc noklusējuma ir asinhrons. Klienti var piespiest sinhrono replikāciju, izmantojot komandu WAIT, taču pat tas nepadara Redisu konsekventu visās kopijās.

Redisam ir servera puses Lua skripti, kas ļauj programmētājiem paplašināt datu bāzi, nerakstot C moduļus vai klienta puses kodu. Redis pamata darījumi ļauj klientam deklarēt komandu secību kā nepārtraucamu vienību, izmantojot MULTI un EXEC komandas, lai definētu un palaistu secību. Tas ir tas pats, kas relāciju darījumi ar atcelšanu.

Redisam ir dažādi diskā noturības līmeņi, kurus lietotājs var izvēlēties. RDB (Redis datu bāzes faila) noturība ar noteiktu laika intervālu uzņem momentuzņēmumus no datu bāzes. AOF (only app-only file) noturība reģistrē katru servera saņemto rakstīšanas darbību. Lai nodrošinātu maksimālu datu drošību, varat izmantot gan RDB, gan AOF noturību.

Redis Sentinel, kas pati ir izplatīta sistēma, nodrošina Redis augstu pieejamību. Tas veic galvenā un kopiju gadījumu uzraudzību, paziņošanu, ja kaut kas nav kārtībā, un automātisku kļūmju pārsūtīšanu, ja galvenais pārtrauc darbu. Tas arī kalpo kā konfigurācijas nodrošinātājs klientiem.

Redis kopa nodrošina veidu, kā palaist Redis instalāciju, kur dati tiek automātiski sadalīti vairākos Redis mezglos. Redis Cluster arī nodrošina zināmu pieejamību nodalījumu laikā, lai gan kopa pārtrauks darboties, ja lielākā daļa meistaru kļūs nepieejami.

Kā jau minēju iepriekš, Redis ir atslēgas vērtību veikals, kas kā vērtības atbalsta virknes, sarakstus, kopas, sakārtotos kopas, jaucējummeklējumus, straumes, HyperLogLogs un Bitmaps. Viens no vienkāršākajiem un izplatītākajiem lietošanas gadījumiem ir veselu skaitļu vērtību izmantošana kā skaitītāji. Lai to atbalstītu, INCR (pieaugums), DECR (samazinājums) un citas atsevišķas darbības ir atomu formas, un tāpēc tās ir drošas vairāku klientu vidē. Redis režīmā, kad tiek manipulēti ar taustiņiem, tie tiks automātiski izveidoti, ja tādu vēl nav.

> SET savienojumi 10

labi

> INCR savienojumi

(vesels skaitlis) 11

> INCR savienojumi

(vesels skaitlis) 12

> DEL savienojumi

(vesels skaitlis) 1

> INCR savienojumi

(vesels skaitlis) 1

> INCRBY savienojumi 100

(vesels skaitlis) 101

> DECR savienojumi

(vesels skaitlis) 100

> DECRBY savienojumi 10

(vesels skaitlis) 90

Arī citiem vērtību struktūru veidiem ir savi piemēri Pamēģiniet Redis. Pamācība tika pakļauta apkopei, kad es to izmēģināju pats; Es ceru, ka tas drīz tiks novērsts, jo Redis Labs ir iesaistījies sākotnēji kopienas centienos.

Redis ir vairāki papildmoduļi, tostarp (popularitātes dilstošā secībā) neironu tīkla modulis, pilna teksta meklēšana, SQL, JSON datu tips un diagrammu datu bāze. Moduļu licences nosaka autori. Daži no moduļiem, kas darbojas ar Redis, galvenokārt ir Redis Enterprise moduļi.

Redis Enterprise uzlabojumi

Izmantojot koplietojamo neko kopu arhitektūru, Redis Enterprise nodrošina bezgalīgu lineāru mērogošanu, neuzliekot nelineārus pieskaitāmos izmērītajā arhitektūrā. Lai pilnībā izmantotu daudzkodolu datora arhitektūras priekšrocības, vienā klastera mezglā varat izvietot vairākus Redis gadījumus. Redis Enterprise ir parādījis mērogošanu simtiem miljonu darbību sekundē ar piecu deviņu (99,999%) darbspēju. Redis Enterprise veic automātisku pārveidošanu un līdzsvarošanu, vienlaikus saglabājot zemu latentumu un lielu caurlaidspēju darījumu slodzēm.

Redis Enterprise piedāvā aktīvi-aktīvu izvietošanu globāli izplatītām datu bāzēm, ļaujot vienlaikus lasīt un rakstīt vienā un tajā pašā datu kopā vairākās ģeogrāfiskās atrašanās vietās. Lai to padarītu efektīvāku, Redis Enterprise var izmantot bezkonfliktu dublētos datu tipus (CRDT), lai uzturētu datu konsekvenci un pieejamību. Riak un Azure Cosmos DB ir divas citas NoSQL datu bāzes, kas atbalsta CRDT.

Lai gan ir plaša akadēmiskā literatūra par CRDT, es atzīstu, ka es pilnībā nesaprotu, kā vai kāpēc viņi strādā. Īss kas viņi to dara, ka CRDT var atrisināt neatbilstības bez iejaukšanās, izmantojot matemātiski atvasinātu noteikumu kopumu. CRDT ir vērtīgi liela apjoma datiem, kuriem nepieciešams koplietojams stāvoklis, un var izmantot ģeogrāfiski izkliedētus serverus, lai samazinātu lietotāju latentumu.

Viena no galvenajām atšķirībām starp Redis un Redis Enterprise ir tā, ka Redis Enterprise atdala datu ceļu no klastera pārvaldības. Tas uzlabo abu komponentu darbību. Datu ceļš ir balstīts uz vairākiem nulles latentuma, vairāku pavedienu starpniekserveriem, kas atrodas katrā no klastera mezgliem, lai maskētu sistēmas pamatā esošo sarežģītību. Klastera pārvaldnieks ir pārvaldības funkcija, kas nodrošina tādas iespējas kā atjaunošana, līdzsvarošana, automātiska kļūmjpārlēce, informēšana par plauktiem, datu bāzes nodrošināšana, resursu pārvaldība, datu noturības konfigurēšana, dublēšana un atkopšana. Tā kā klastera pārvaldnieks ir pilnībā atdalīts no datu ceļa komponentiem, tā programmatūras komponentu izmaiņas neietekmē datu ceļa komponentus.

Redis on Flash ir Redis Enterprise funkcija, kas var krasi samazināt Redis aparatūras izmaksas. Tā vietā, lai maksātu caur degunu par RAM terabaitiem vai ierobežotu Redis datu kopu lielumu, varat izmantot Redis uz Flash, lai bieži piekļūtus karstos datus ievietotu atmiņā un vēsākas vērtības Flash vai pastāvīgajā atmiņā, piemēram, Intel Optane DC.

Redis Enterprise moduļi ietver RedisGraph, RedisJSON, RedisTimeSeries, RedisBloom, RediSearch un RedisGears. Visi Redis Enterprise moduļi darbojas arī ar atvērtā koda Redis.

Kas jauns Redis 6?

Redis 6 ir liels izlaidums gan atvērtā koda versijai, gan Redis Enterprise komerciālajai versijai. Veiktspējas jaunumi ir vītņota I / O izmantošana, kas Redis 6 dod 2x ātruma uzlabojumu salīdzinājumā ar Redis 5 (kas nebija nekāds slinkums). Tas tiek pārnests uz Redis Enterprise, kam ir papildu ātruma uzlabojumi kopām, kā aprakstīts iepriekš.

Piekļuves kontroles sarakstu (ACL) pievienošana Redis 6 piešķir lietotāju jēdzienu un ļauj izstrādātājiem rakstīt drošāku kodu. Redis Enterprise 6 balstās uz ACL, lai piedāvātu uz lomām balstītu piekļuves kontroli (RBAC), kas ir ērtāk programmētājiem un DBA.

Galvenās jaunās iespējas Redis 6

Redis 6.0 atvērtā koda

  • Piekļuves kontroles saraksti (ACL)
  • Uzlabota izlikšana
  • Vītņota I / O
  • RESP3 protokols

Redis Enterprise 6.0

  • Uz lomu balstīta piekļuves kontrole (RBAC)
  • Aktīvā-aktīvā paplašināšana
  • HyperLogLog
  • Straumes

Redis Enterprise 6.0 pievieno atbalstu straumju datu tipam aktīvās un aktīvās datu bāzēs. Tas nodrošina gan augstu pieejamību, gan zemu latentumu, vienlaikus lasot un rakstot reāllaika straumē un no tās vairākos datu centros vairākās ģeogrāfiskās vietās.

RedisGears ir dinamisks ietvars, kas ļauj izstrādātājiem rakstīt un izpildīt funkcijas, kas ievieš datu plūsmas Redis. Tas ļauj lietotājiem rakstīt Python skriptus, lai tie darbotos Redis iekšienē, kā arī ļauj izmantot vairākus gadījumus, ieskaitot atpalikšanu (Redis darbojas kā diska bāzes datu bāzes priekšgals), reāllaika datu apstrādi, straumēšanu un notikumu apstrādi, darbības kas šķērso datu struktūras un modeļus, kā arī ar mākslīgo intelektu vērstus darījumus.

RedisAI ir dzinēja kalpošanas modelis, kas darbojas Redis iekšpusē. Tas var izdarīt secinājumus ar PyTorch, TensorFlow un ONNX modeļiem. RedisAI var darboties ar centrālajiem procesoriem un GPU un ļauj izmantot tādus gadījumus kā krāpšanas noteikšana, anomāliju noteikšana un personalizēšana.

Redis instalēšana

Redis var instalēt, lejupielādējot un kompilējot avota patērētāju vai izvelkot Docker attēlu no Docker Hub. Redis var apkopot un izmantot Linux, MacOS, OpenBSD, NetBSD un FreeBSD. Pirmkodu krātuve atrodas vietnē GitHub. Operētājsistēmā Windows Redis varat palaist vai nu Docker konteinerā, vai arī zem Windows apakšsistēmas Linux (WSL), kurai nepieciešama operētājsistēma Windows 10.

Redis Enterprise var instalēt Linux vai Docker konteineros. Linux lejupielādes notiek bināru pakotņu veidā (DEB vai RPM atkarībā no Linux garšas) un Bash čaulas skriptu klastera instalēšanai. Skripti pārbauda, ​​vai instalēšanai nepieciešami četri kodoli un 15 GB RAM.

Redis Enterprise Cloud

Ātrākais veids, kā instalēt Redis Enterprise, nav to vispār instalēt, bet drīzāk palaist Redis Enterprise Cloud. Kad es pats to izmēģināju pārskatīšanas nolūkos, es sākotnēji saņēmu Redis 5 instanci; Man bija jālūdz jauninājums uz Redis 6.

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