Utgivelse av Redis 7.0 DBMS

Utgivelsen av Redis 7.0 DBMS, som tilhører klassen NoSQL-systemer, har blitt publisert. Redis tilbyr funksjoner for lagring av nøkkel-/verdidata, forbedret med støtte for strukturerte dataformater som lister, hashes og sett, samt muligheten til å kjøre serverside-skriptbehandlere i Lua. Prosjektkoden leveres under BSD-lisensen. Ytterligere moduler som tilbyr avanserte funksjoner for bedriftsbrukere, som RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, har blitt levert under en proprietær RSAL-lisens siden 2019. GoodFORM-prosjektet, som nylig har stagnert, forsøkte å fortsette utviklingen av åpne versjoner av disse modulene under AGPLv3-lisensen.

I motsetning til lagringssystemer i minnet som Memcached, sørger Redis for at data vedvarende lagres på disken og sørger for at databasen forblir intakt i tilfelle en krasj. Kildekoden til prosjektet distribueres under BSD-lisensen. Klientbiblioteker er tilgjengelige for de fleste populære språk, inkludert Perl, Python, PHP, Java, Ruby og Tcl. Redis støtter transaksjoner, som lar deg utføre en gruppe kommandoer i ett trinn, og sikrer konsistens og konsistens (kommandoer fra andre forespørsler kan ikke forstyrre) i utførelsen av et gitt sett med kommandoer, og i tilfelle problemer, lar deg rulle tilbake Endringer. Alle data er fullt bufret i RAM.

Kommandoer som økning/redusering, standard liste- og settoperasjoner (union, skjæringspunkt), navn på nøkkel, flere valg og sorteringsfunksjoner er tilgjengelig for databehandling. To lagringsmoduser støttes: periodisk synkronisering av data til disk og vedlikehold av en endringslogg på disk. I det andre tilfellet er fullstendig sikkerhet for alle endringer garantert. Det er mulig å organisere master-slave-datareplikering til flere servere, utført i en ikke-blokkerende modus. En "publiser/abonner" meldingsmodus er også tilgjengelig, der det opprettes en kanal, hvorfra meldinger distribueres til klienter via abonnement.

Viktige endringer i Redis 7.0:

  • Lagt til støtte for funksjoner på serversiden. I motsetning til tidligere støttede skript på Lua-språket, er ikke funksjonene knyttet til applikasjonen og er rettet mot å implementere ytterligere logikk som utvider serverens muligheter. Funksjoner behandles uløselig med dataene og i forhold til databasen, og ikke til applikasjonen, inkludert å bli replikert og lagret i vedvarende lagring.
  • En andre utgave av ACL har blitt foreslått, som lar deg kontrollere tilgang til data basert på nøkler og lar deg definere forskjellige sett med regler for tilgang til kommandoer med muligheten til å binde flere velgere (sett med tillatelser) til hver bruker. Hver nøkkel kan identifiseres med en spesifikk autoritet, for eksempel kan du begrense tilgangen til kun å lese eller skrive et bestemt delsett av nøkler.
  • En partisjonert (delt) implementering av Publish-Subscribe meldingsdistribusjonsparadigmet som kjører i en klynge er gitt, der en melding sendes til en spesifikk node som en meldingskanal er knyttet til, hvoretter denne meldingen blir omdirigert til de resterende nodene inkludert i skåren. Klienter kan motta meldinger ved å abonnere på en kanal, både ved å koble til hovednoden og til seksjonens sekundære noder. Kontroll utføres ved hjelp av kommandoene SSUBSCRIBE, SUNSUBSCRIBE og SPUBLISH.
  • Lagt til støtte for behandling av underkommandoer i de fleste sammenhenger.
  • Nye kommandoer lagt til:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCANELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • KOMMANDODOKER, KOMMANDOLISTE.
    • LATENCY HITOGRAM.
    • CLUSTER SHARDS, CLUSTER LINKER, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • KLIENT INGEN BUTNING.
    • ACL DRYRUN.
  • Muligheten til å behandle flere konfigurasjoner samtidig i ett CONFIG SET/GET-anrop er gitt.
  • Alternativene "-json", "-2", "-scan", "-functions-rdb" er lagt til redis-cli-verktøyet.
  • Som standard er klienttilgang til innstillinger og kommandoer som påvirker sikkerheten deaktivert (for eksempel er DEBUG- og MODULE-kommandoene deaktivert, endring av konfigurasjoner med PROTECTED_CONFIG-flagget er forbudt). Redis-cli sender ikke lenger kommandoer som inneholder sensitive data til en historiefil.
  • En stor del av optimaliseringer har blitt introdusert for å øke ytelsen og redusere minneforbruket. For eksempel har minneforbruket blitt betydelig redusert når du aktiverer klyngemodus, når du utfører kopier-på-skriv-operasjoner, og når du arbeider med hashes og zset-nøkler. Forbedret logikk for å skylle data til disk (fsync call). Antall nettverkspakker og systemanrop ved sending av svar til klienten er redusert. Replikeringseffektiviteten er forbedret.
  • Sårbarheten CVE-2022-24735 i miljøet for kjøring av Lua-skript er fikset, noe som lar deg erstatte din egen Lua-kode og oppnå kjøring av den i sammenheng med en annen bruker, inkludert en med høyere rettigheter.
  • Fikset sårbarhet CVE-2022-24736, som lar redis-serverprosessen krasje på grunn av NULL-pekerdereferens. Angrepet utføres gjennom lasting av spesialdesignede Lua-skript.

Kilde: opennet.ru

Legg til en kommentar