Udgivelsen af databasen Redis 7.0.

Redis 7.0 er blevet offentliggjort, og det tilhører NoSQL-systemklassen. Redis tilbyder funktioner til at gemme data i nøgle/værdi-format, med udvidet support til strukturerede dataformater såsom lister, hasher og sæt, samt muligheden for at udføre server-side scripts på Lua. Projektets kode leveres under BSD-licensen. Yderligere moduler, der tilbyder udvidede funktioner til virksomhedskunder, såsom RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, leveres siden 2019 under den proprietære RSAL-licens. Udviklingen af åbne versioner af disse moduler under AGPLv3-licensen blev forsøgt af projektet GoodFORM, som for nylig har været i stagnation.

I modsætning til in-memory lagringssystemer som Memcached, tilbyder Redis vedvarende lagring af data på disk og sikrer databasens integritet i tilfælde af et uventet afbrud. Projektets kildekoder 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, der giver mulighed for at udføre en gruppe kommandoer i ét skridt og sikrer konsistens og sekventiel udførelse (kommandoer fra andre anmodninger kan ikke blande sig) af en nævnt kommando-gruppe, samt muligheden for at rulle ændringer tilbage i tilfælde af problemer. Alle data bliver fuldt cachet i hukommelsen.

Til datahåndtering gives der kommandoer som inkrement/dekrement, standardoperationer på lister og sæt (forening, intersection), omdøbning af nøgler, multipel sampling og sorterede funktioner. To lagringsmetoder understøttes: periodisk synkronisering af data på disk og føring af en ændringslog på disken. I det andet tilfælde sikres det, at alle ændringer bliver bevaret fuldt ud. Det er muligt at organisere master-slave datarapportering til flere servere, der sker i en ikke-blokerende tilstand. En publicerings-abonnements-mulighed er også tilgængelig, hvor en kanal oprettes, og beskeder fra denne kanal distribueres til abonnenter.

Nøgleændringer i Redis 7.0:

  • Understøttelse af funktioner, der udføres på serveren server. I modsætning til tidligere understøttede scripts på Lua-sproget er funktionerne ikke bundet til applikationen og sigter mod at implementere yderligere logik, der udvider serverens muligheder. Funktionen behandles uadskilleligt med dataene og i tilknytning til databasen, ikke til applikationen, herunder replikering og opbevaring i vedvarende lager.
  • Den anden udgave af ACL er foreslået, som gør det muligt at administrere adgang til data baseret på nøgler og tillader definition af forskellige sæt adgangsregler til kommandoer med mulighed for at binde flere vælgere (sætlister) til hver bruger. Hver nøgle kan identificeres med bestemte rettigheder, f.eks. kan adgangen begrænses til kun læsning eller skrivning af et bestemt udvalg af nøgler.
  • Der er leveret en fungerende sektioneret (sharded) implementering af Publish-Subscribe-paradigmet, hvor en besked sendes til en bestemt node, som kanalen for beskeder er knyttet til, hvorefter denne besked videresendes til de øvrige noder, der indgår i sektionen (shard). Klienter kan modtage beskeder ved at abonnere på kanalen, både ved at oprette forbindelse til hovednoden og de sekundære noder i sektionen. Administration foretages ved hjælp af kommandoerne SSUBSCRIBE, SUNSUBSCRIBE og SPUBLISH.
  • Der er tilføjet understøttelse af behandling af underkommandos i de fleste kontekster.
  • Nye kommandoer er blevet tilføjet:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • COMMAND DOCS, COMMAND LIST.
    • LATENCY HISTOGRAM.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • CLIENT NO-EVICT.
    • ACL DRYRUN.
  • Muligheden for at behandle flere konfigurationer i et enkelt kald CONFIG SET/GET er blevet givet.
  • Der er tilføjet indstillinger til værktøjet redis-cli: '—json', '-2', '—scan', '—functions-rdb'.
  • Som standard er adgangen for klienter til indstillinger og kommandoer, der påvirker sikkerheden (f.eks. er kommandoerne DEBUG og MODULE deaktiveret, og ændringer af konfigurationer med flaget PROTECTED_CONFIG er forbudt), deaktiveret. I redis-cli er udskrivning af kommando-historik til fil, der indeholder fortrolige oplysninger, blevet stoppet.
  • Der er foretaget en stor mængde optimeringer med henblik på at forbedre ydeevnen og reducere hukommelsesforbruget. For eksempel er hukommelsesforbruget betydeligt reduceret ved aktivering af klyngemoden, ved udførelse af copy-on-write operationer og ved arbejde med hash-tabeller og zset-nøgler. Logikken for data-til-disk reset (kald af fsync) er forbedret. Antallet af netværkspakker og systemkald ved sending af svar til klienten er reduceret. Effektiviteten af replikation er øget.
  • Sårbarheden CVE-2022-24735 i Lua-scripts udførelsesmiljøet er blevet rettet, hvilket gjorde det muligt at indsætte sin egen Lua-kode og få den udført i konteksten af en anden bruger, herunder en med højere privilegier.
  • Sårbarheden CVE-2022-24736 er blevet rettet, hvilket kunne føre til en nedbrud af redis-server processen på grund af dereferencering af en nulpeger. Angrebet udføres via indlæsning af specielt udformede Lua-scripts.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster