Udgivelse af Redis 7.0 DBMS

Udgivelsen af ​​Redis 7.0 DBMS, som tilhører klassen af ​​NoSQL-systemer, er blevet offentliggjort. Redis giver funktioner til lagring af nøgle-/værdidata, forbedret af understøttelse af strukturerede dataformater såsom lister, hashes og sæt, samt muligheden for at køre server-side script-handlere i Lua. Projektkoden leveres under BSD-licensen. Yderligere moduler, der tilbyder avancerede funktioner til virksomhedsbrugere, såsom RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, er blevet leveret under en proprietær RSAL-licens siden 2019. GoodFORM-projektet, som for nylig har været stagneret, forsøgte at fortsætte udviklingen af ​​åbne versioner af disse moduler under AGPLv3-licensen.

I modsætning til lagersystemer i hukommelsen som f.eks. Memcached, sikrer Redis, at data konstant lagres på disken og sikrer, at databasen forbliver intakt i tilfælde af et nedbrud. Kildekoden til projektet distribueres under BSD-licensen. Klientbiblioteker er tilgængelige for de fleste populære sprog, herunder Perl, Python, PHP, Java, Ruby og Tcl. Redis understøtter transaktioner, som giver dig mulighed for at udføre en gruppe af kommandoer i ét trin, hvilket sikrer konsistens og konsistens (kommandoer fra andre anmodninger kan ikke forstyrre) i udførelsen af ​​et givet sæt kommandoer, og i tilfælde af problemer, giver dig mulighed for at rulle tilbage ændringer. Alle data er fuldt cachelagret i RAM.

Kommandoer som f.eks. stigning/nedsættelse, standardliste- og sætoperationer (forening, kryds), ​​nøgleomdøbning, flere valg og sorteringsfunktioner er tilvejebragt til datastyring. To lagertilstande understøttes: periodisk synkronisering af data til disk og vedligeholdelse af en ændringslog på disk. I det andet tilfælde er fuldstændig sikkerhed for alle ændringer garanteret. Det er muligt at organisere master-slave-datareplikering til flere servere, udført i en ikke-blokerende tilstand. En "publicer/abonner"-meddelelsestilstand er også tilgængelig, hvor der oprettes en kanal, hvorfra beskeder distribueres til kunder via abonnement.

Vigtigste ændringer i Redis 7.0:

  • Tilføjet understøttelse af server-side funktioner. I modsætning til tidligere understøttede scripts på Lua-sproget er funktionerne ikke bundet til applikationen og er rettet mod at implementere yderligere logik, der udvider serverens muligheder. Funktioner behandles uløseligt med dataene og i forhold til databasen og ikke til applikationen, herunder replikeres og opbevares i vedvarende lagring.
  • En anden udgave af ACL er blevet foreslået, som giver dig mulighed for at kontrollere adgang til data baseret på nøgler og giver dig mulighed for at definere forskellige sæt regler for adgang til kommandoer med mulighed for at binde flere vælgere (sæt af tilladelser) til hver bruger. Hver nøgle kan identificeres med en specifik autoritet, for eksempel kan du begrænse adgangen til kun at læse eller skrive et bestemt undersæt af nøgler.
  • En partitioneret (sharded) implementering af Publish-Subscribe besked distributionsparadigmet, der kører i en klynge, er tilvejebragt, hvor en besked sendes til en specifik node, hvortil en beskedkanal er knyttet, hvorefter denne besked omdirigeres til de resterende inkluderede noder i skærven. Klienter kan modtage beskeder ved at abonnere på en kanal, både ved at oprette forbindelse til hovedknuden og til sektionens sekundære knudepunkter. Kontrol udføres ved hjælp af kommandoerne SSUBSCRIBE, SUNSUBSCRIBE og SPUBLISH.
  • Tilføjet understøttelse til behandling af underkommandoer i de fleste sammenhænge.
  • Nye kommandoer tilføjet:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCANELS/SHARDNUMSUB.
    • UDLØBSTID, PEXPIRETID.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • KOMMANDODOC., KOMMANDOLISTE.
    • LATENCY HISTOGRAM.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • KLIENT INGEN FREMSTILLING.
    • ACL DRYRUN.
  • Muligheden for at behandle flere konfigurationer på én gang i et CONFIG SET/GET-opkald er tilvejebragt.
  • Indstillingerne "-json", "-2", "-scan", "-functions-rdb" er blevet tilføjet til redis-cli-værktøjet.
  • Som standard er klientadgang til indstillinger og kommandoer, der påvirker sikkerheden, deaktiveret (f.eks. er kommandoerne DEBUG og MODULE deaktiveret, og det er forbudt at ændre konfigurationer med flaget PROTECTED_CONFIG). Redis-cli udsender ikke længere kommandoer, der indeholder følsomme data, til en historiefil.
  • En stor del af optimeringer er blevet introduceret med det formål at øge ydeevnen og reducere hukommelsesforbruget. For eksempel er hukommelsesforbruget blevet væsentligt reduceret, når du aktiverer klyngetilstand, når du udfører kopier-på-skriv-operationer, og når du arbejder med hashes og zset-nøgler. Forbedret logik til at skylle data til disk (fsync-kald). Antallet af netværkspakker og systemopkald ved afsendelse af svar til klienten er blevet reduceret. Replikeringseffektiviteten er blevet forbedret.
  • Sårbarheden CVE-2022-24735 i miljøet til udførelse af Lua-scripts er blevet rettet, hvilket giver dig mulighed for at erstatte din egen Lua-kode og opnå dens eksekvering i sammenhæng med en anden bruger, inklusive en med højere rettigheder.
  • Rettet sårbarhed CVE-2022-24736, som gør det muligt for redis-server-processen at gå ned på grund af NULL pointer-dereference. Angrebet udføres gennem indlæsning af specialdesignede Lua-scripts.

Kilde: opennet.ru

Tilføj en kommentar