Ohjelmointi

Redis 6: Nopea tietokanta, välimuisti ja viestien välittäjä

Kuten monet, saatat ajatella Redistä vain välimuistiksi. Tämä näkökulma on vanhentunut.

Pohjimmiltaan Redis on NoSQL-muistin sisäinen tietorakennevarasto, joka voi jatkua levyllä. Se voi toimia tietokantana, välimuistina ja viestien välittäjänä. Redisillä on sisäänrakennettu replikointi, Lua-komentosarjat, LRU-häätö, tapahtumat ja erilainen levyn pysyvyyden taso. Se tarjoaa korkean käytettävyyden Redis Sentinelin kautta ja automaattisen osioinnin Redis Clusterin kautta.

Redis-ydintietomalli on avainarvo, mutta tuetaan monia erilaisia ​​arvoja: merkkijonot, luettelot, sarjat, lajitellut sarjat, hajautukset, virrat, HyperLogLogs ja bittikartat. Redis tukee myös paikkatietohakemistoja sädekyselyillä ja -virroilla.

[Myös: Kuinka Redis naarmuuntui ja kutitti - ja muutti tietokantoja ikuisesti]

Redis Enterprise lisää avoimen lähdekoodin Rediksen ominaisuuksia nopeuden, luotettavuuden ja joustavuuden lisäämiseksi sekä pilvipalvelutietokannan palveluna. Redis Enterprise skaalautuu lineaarisesti satoihin miljooniin operaatioihin sekunnissa, sillä on aktiivinen-aktiivinen globaali jakelu paikallisella viiveellä, tarjoaa Redis on Flash -toiminnon tukemaan suuria tietojoukkoja levypohjaisen tietokannan infrastruktuurikustannuksilla ja tarjoaa 99,999% käyttöaikaa rakennettuun - kestävyydessä ja yksinumeroisissa sekunneissa.

Edelleen Redis Enterprise laajentaa Redis-ydintoiminnot tukemaan kaikkia tietojen mallintamistapoja moduuleilla, kuten RediSearch, RedisGraph, RedisJSON, RedisTimeSeries ja RedisAI, ja sallii operaatioiden suorittamisen moduulien ja ytimen välillä ja välillä. Kaikki tämä tarjotaan pitäen tietokannan viive alle millisekunnissa.

Core Redis -ominaisuudet ja käyttötapaukset

Mitä tarkoittaa, että Redis voi nyt toimia tietokantana, välimuistina ja viestien välittäjänä? Ja mitä käyttötapauksia nämä roolit tukevat?

Kätkö on Rediksen klassinen tehtävä. Pohjimmiltaan Redis istuu levypohjaisen tietokannan edessä ja tallentaa kyselyt ja tulokset; sovellus tarkistaa ensin, onko Redis-välimuistissa tallennettuja tuloksia, ja kysyy levypohjaisesta tietokannasta tuloksia, joita ei tällä hetkellä ole välimuistissa. Kun otetaan huomioon Redisin alle millisekunnin vastausprosentti, tämä on yleensä suuri voitto sovellusten suorituskyvylle. Vanhentumisajastimet ja LRU (viimeksi käytetty) poistaminen Redisin välimuistista auttavat pitämään välimuistin ajan tasalla ja käyttämään muistia tehokkaasti.

istuntokauppa on tärkeä osa nykyaikaisia ​​verkkosovelluksia. Se on kätevä paikka säilyttää tietoja käyttäjästä ja hänen vuorovaikutuksestaan ​​sovelluksen kanssa. Verkkofarmi-arkkitehtuurissa istuntokaupan isännöinti suoraan verkkopalvelimeen vaatii käyttäjän asettamista "kiinni" samaan taustapalvelimeen tulevia pyyntöjä varten, mikä voi rajoittaa kuormituksen tasapainotinta. Levypohjaisen tietokannan käyttäminen istuntomyymälässä poistaa tarpeen sitoa istunto yhteen verkkopalvelimeen, mutta tuo käyttöön uuden viiveen lähteen. Redisin (tai minkä tahansa muun nopean muistitietokannan) käyttäminen istuntomyymälänä johtaa usein matalaviiveiseen, suuritehoiseen verkkosovellusarkkitehtuuriin.

Redis voi toimia a viestin välittäjä käyttämällä kolmea erilaista mekanismia, ja yksi Rediksen tärkeistä käyttötapauksista viestinvälittäjänä on toimia liimana mikropalvelujen välillä. Redisillä on alhainen yleishyödyllinen julkaisu- / tilausilmoitusmekanismi, joka helpottaa tulipalo- ja unohda-viestejä, mutta ei voi toimia, kun kohdepalvelu ei kuuntele. Pysyvämmän, Kafkan kaltaisen viestijonon saavuttamiseksi Redis käyttää virtoja, jotka ovat aikaleimalla järjestettyjä avainarvopareja yhdessä avaimessa. Redis tukee myös kaksinkertaisesti linkitettyjä luetteloita yhdelle avaimelle tallennetuista elementeistä, jotka ovat hyödyllisiä FIFO (first-in / first-out) -jonoina. Mikropalvelut voivat käyttää Redisiä välimuistina ja usein myös välittäjänä, vaikka välimuistin pitäisi toimia erillisessä Redisin esiintymässä viestijonosta.

Perusreplikaation avulla Redis voi skaalata käyttämättä Redis Enterprise -version klusteritekniikkaa. Redis-replikointi käyttää johtaja-seuraaja -mallia (jota kutsutaan myös isäntä-orjaksi), joka on oletusarvoisesti asynkroninen. Asiakkaat voivat pakottaa synkronisen replikoinnin WAIT-komennolla, mutta siitä huolimatta Redis ei ole yhdenmukainen replikoissa.

Redisillä on palvelinpuolen Lua-komentosarja, jonka avulla ohjelmoijat voivat laajentaa tietokantaa kirjoittamatta C-moduuleja tai asiakaspuolen koodia. Perus Redis-tapahtumien avulla asiakas voi ilmoittaa komentosarjan keskeytymättömänä yksikkönä käyttämällä MULTI- ja EXEC-komentoja sekvenssin määrittelemiseksi ja suorittamiseksi. Tämä on ei sama kuin relaatiotapahtumat palautusten kanssa.

Redisillä on erilainen levyn pysyvyyden taso, jonka käyttäjä voi valita. RDB: n (Redis-tietokantatiedosto) pysyvyys ottaa tietokannasta hetkessä otoksia tietyin väliajoin. AOF (vain liitetiedosto) pysyvyys kirjaa kaikki palvelimen vastaanottamat kirjoitusoperaatiot. Voit käyttää sekä RDB- että AOF-pysyvyyttä parhaan tietoturvan takaamiseksi.

Redis Sentinel, itse hajautettu järjestelmä, tarjoaa Redisille korkean käytettävyyden. Se valvoo isäntä- ja kopioesimerkkejä, ilmoittaa jos on jotain vikaa ja automaattisen vianmäärityksen, jos päällikkö lakkaa toimimasta. Se toimii myös kokoonpanon tarjoajana asiakkaille.

Redis Cluster tarjoaa tavan suorittaa Redis-asennus, jossa tiedot sirpaloituvat automaattisesti useiden Redis-solmujen yli. Redis Cluster tarjoaa myös jonkin verran käytettävyyttä osioiden aikana, vaikka klusteri lakkaa toimimasta, jos suurin osa päälliköistä ei ole käytettävissä.

Kuten aiemmin mainitsin, Redis on avainarvomyymälä, joka tukee merkkijonoja, luetteloita, sarjoja, lajiteltuja sarjoja, hajautuksia, virtoja, HyperLogLogsia ja bittikarttoja. Yksi yksinkertaisimmista ja yleisimmistä käyttötapauksista on kokonaislukuarvojen käyttäminen laskureina. Tämän tueksi INCR (inkrementti), DECR (dekrementti) ja muut yksittäiset operaatiot ovat atomisia ja siksi turvallisia monen asiakkaan ympäristössä. Rediksessä, kun avaimia manipuloidaan, ne luodaan automaattisesti, jos niitä ei vielä ole.

> SET-liitännät 10

OK

> INCR-liitännät

(kokonaisluku) 11

> INCR-liitännät

(kokonaisluku) 12

> DEL-yhteydet

(kokonaisluku) 1

> INCR-liitännät

(kokonaisluku) 1

> INCRBY-liitännät 100

(kokonaisluku) 101

> DECR-liitännät

(kokonaisluku) 100

> DECRBY-liitännät 10

(kokonaisluku) 90

Muilla arvorakenteilla on myös omat esimerkit Try Redis -opetusohjelmassa. Opetusohjelma oli parhaillaan huollossa, kun kokeilin sitä itse; Odotan, että se korjataan pian, kun Redis Labs on osallistunut alun perin yhteisön ponnisteluihin.

Redikselle on olemassa useita lisämoduuleja, mukaan lukien (suosion laskevassa järjestyksessä) hermoverkkomoduuli, kokotekstihaku, SQL, JSON-tietotyyppi ja graafitietokanta. Kirjoittajat asettavat moduulien lisenssit. Jotkut Rediksen kanssa työskentelevistä moduuleista ovat ensisijaisesti Redis Enterprise -moduuleja.

Redis Enterprise -parannukset

Jaetun ei-klusteriarkkitehtuurin avulla Redis Enterprise tarjoaa loputtoman lineaarisen skaalauksen asettamatta mitään epälineaarisia yleiskustannuksia laajennetulle arkkitehtuurille. Voit ottaa useita Redis-ilmentymiä yhteen klusterisolmuun, jotta voit hyödyntää moniydintietokoneiden arkkitehtuuria. Redis Enterprise on osoittanut skaalautumisensa satoihin miljooniin operaatioihin sekunnissa viiden yhdeksän (99,999%) käyttöajan kanssa. Redis Enterprise suorittaa automaattisen uudelleen sirpoutumisen ja tasapainottamisen säilyttäen matalan viiveen ja korkean suoritustehon transaktiokuormille.

Redis Enterprise tarjoaa aktiivisen ja aktiivisen käyttöönoton maailmanlaajuisesti hajautettuihin tietokantoihin, mikä mahdollistaa samanaikaisen luku- ja kirjoitusoperaation samassa tietojoukossa useilla maantieteellisillä alueilla. Tehokkuuden parantamiseksi Redis Enterprise voi käyttää ristiriitattomia replikoituja tietotyyppejä (CRDT) tietojen yhtenäisyyden ja saatavuuden ylläpitämiseksi. Riak ja Azure Cosmos DB ovat kaksi muuta NoSQL-tietokantaa, jotka tukevat CRDT-tiedostoja.

Vaikka CRDT: istä on laaja akateeminen kirjallisuus, myönnän, etten ymmärrä täysin, miten tai miksi ne toimivat. Lyhyt yhteenveto mitä he tekevät, että CRDT: t voivat ratkaista epäjohdonmukaisuudet ilman puuttumista matemaattisesti johdettujen sääntöjen avulla. CRDT: t ovat arvokkaita suurten määrien tiedoille, jotka edellyttävät jaettua tilaa, ja ne voivat käyttää maantieteellisesti hajautettuja palvelimia käyttäjien viiveen vähentämiseksi.

Yksi suurimmista eroista Redis ja Redis Enterprise välillä on, että Redis Enterprise irrottaa datapolun klusterinhallinnasta. Tämä parantaa molempien komponenttien toimintaa. Datapolku perustuu useisiin nollaviiveisiin, monisäikeisiin välityspalvelimiin, jotka sijaitsevat kussakin klusterisolmussa järjestelmän taustalla olevan monimutkaisuuden peittämiseksi. Klusterinhallinta on hallintatoiminto, joka tarjoaa ominaisuuksia, kuten uudistamisen, tasapainottamisen, automaattisen vianmäärityksen, tietoturvan tunnistamisen, tietokantojen valmistelun, resurssien hallinnan, tietojen pysyvyyden määrityksen sekä varmuuskopioinnin ja palautuksen. Koska klusterinhallinta on täysin irrotettu datapolun komponenteista, sen ohjelmistokomponenttien muutokset eivät vaikuta datapolun komponentteihin.

Redis on Flash on Redis Enterprise -ominaisuus, joka voi vähentää huomattavasti Rediksen laitteistokustannuksia. Sen sijaan, että joudut maksamaan nenän kautta teratavuista RAM-muistia tai rajoittamaan Redis-tietojoukkojesi kokoa, voit käyttää Redis Flash -palvelussa sijoittaa usein käytettyjä kuumia tietoja muistiin ja kylmempiä arvoja Flashiin tai pysyvään muistiin, kuten Intel Optane DC.

Redis Enterprise -moduulit sisältävät RedisGraph, RedisJSON, RedisTimeSeries, RedisBloom, RediSearch ja RedisGears. Kaikki Redis Enterprise -moduulit toimivat myös avoimen lähdekoodin Redisin kanssa.

Mitä uutta on Redis 6: ssa?

Redis 6 on iso julkaisu, sekä avoimen lähdekoodin että Redis Enterprise -versiolle. Suorituskykyuutinen on kierteitetyn I / O: n käyttö, mikä antaa Redis 6: lle kaksinkertaisen nopeuden parannuksen Redis 5: een nähden (mikä ei ollut laiska). Tämä siirtyy Redis Enterprise -yritykseen, jolla on ylimääräisiä nopeusparannuksia klustereille edellä kuvatulla tavalla.

ACL-luetteloiden lisääminen antaa Redis 6: lle käyttäjien käsitteen ja antaa kehittäjille mahdollisuuden kirjoittaa turvallisempaa koodia. Redis Enterprise 6 perustuu ACL-luetteloihin tarjoamaan roolipohjaista kulunvalvontaa (RBAC), mikä on helpompaa ohjelmoijille ja DBA: lle.

Tärkeimmät uudet ominaisuudet Redis 6: ssa

Redis 6.0 avoimen lähdekoodin

  • Kulunvalvontaluettelot (ACL)
  • Parempi häätö
  • Kierteitetty I / O
  • RESP3-protokolla

Redis Enterprise 6.0

  • Roolipohjainen kulunvalvonta (RBAC)
  • Pidennetään aktiivinen-aktiivinen
  • HyperLog-loki
  • Suoratoistot

Redis Enterprise 6.0 lisää tuen Streams-tietotyypille aktiivisissa-aktiivisissa tietokannoissa. Tämä sallii sekä korkean käytettävyyden että matalan viiveen samalla, kun samanaikaisesti luetaan ja kirjoitetaan reaaliaikaisesta suoratoistosta ja siitä toiseen useissa datakeskuksissa useilla maantieteellisillä alueilla.

RedisGears on dynaaminen kehys, jonka avulla kehittäjät voivat kirjoittaa ja suorittaa toimintoja, jotka toteuttavat tietovirrat Rediksessä. Sen avulla käyttäjät voivat kirjoittaa Python-komentosarjoja suoritettavaksi Rediksen sisällä, ja mahdollistaa useita käyttötapauksia, mukaan lukien kirjoitus (Redis toimii etupäänä levypohjaiseen tietokantaan), reaaliaikainen tietojenkäsittely, suoratoisto ja tapahtumien käsittely, toiminnot jotka ylittävät tietorakenteet ja -mallit sekä tekoälyohjatut tapahtumat.

RedisAI on malli, joka palvelee Redistä. Se voi tehdä päätelmiä PyTorch-, TensorFlow- ja ONNX-malleista. RedisAI voi toimia keskusyksiköillä ja näytönohjaimilla, ja se mahdollistaa käyttötapaukset, kuten petosten havaitsemisen, poikkeavuuksien havaitsemisen ja mukauttamisen.

Redisin asentaminen

Voit asentaa Rediksen lataamalla ja kääntämällä lähdekoodin tai vetämällä Docker-kuvan Docker Hubista. Redis voidaan kääntää ja käyttää Linuxissa, MacOS: ssa, OpenBSD: ssä, NetBSD: ssä ja FreeBSD: ssä. Lähdekoodivarasto on GitHubissa. Windowsissa voit käyttää Redistä joko Docker-säilössä tai Windows-alijärjestelmässä Linuxille (WSL), joka vaatii Windows 10: n.

Voit asentaa Redis Enterprise -järjestelmän Linuxiin tai Docker-säilöihin. Linux-lataukset ovat binaaripaketteja (DEB tai RPM Linuxin mausta riippuen) ja Bash-komentotiedostoja klusterin asennusta varten. Skriptit tarkistavat tarvittavat neljä ydintä ja 15 Gt RAM-muistia asennusta varten.

Redis Enterprise Cloud

Nopein tapa asentaa Redis Enterprise ei ole asentaa sitä ollenkaan, vaan pikemminkin ajaa se Redis Enterprise Cloudissa. Kun yritin tätä itse uudelleentarkastelua varten, sain aluksi Redis 5 -tapahtuman; Minun piti pyytää päivitystä Redis 6: een.

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