Release av Redis 7.0 DBMS

Releasen av Redis 7.0 DBMS, som tillhör klassen av NoSQL-system, har publicerats. Redis tillhandahåller funktioner för att lagra nyckel-/värdedata, förstärkt av stöd för strukturerade dataformat som listor, hash och uppsättningar, samt möjligheten att köra skripthanterare på serversidan i Lua. Projektkoden tillhandahålls under BSD-licensen. Ytterligare moduler som erbjuder avancerade funktioner för företagsanvändare, såsom RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, har levererats under en egenutvecklad RSAL-licens sedan 2019. GoodFORM-projektet, som nyligen har stagnerat, försökte fortsätta utvecklingen av öppna versioner av dessa moduler under AGPLv3-licensen.

Till skillnad från lagringssystem i minnet som Memcached, säkerställer Redis att data ständigt lagras på disken och ser till att databasen förblir intakt i händelse av en krasch. Källkoden för projektet distribueras under BSD-licensen. Klientbibliotek är tillgängliga för de flesta populära språken, inklusive Perl, Python, PHP, Java, Ruby och Tcl. Redis stöder transaktioner, som låter dig utföra en grupp av kommandon i ett steg, vilket säkerställer konsistens och konsekvens (kommandon från andra förfrågningar kan inte störa) i exekveringen av en given uppsättning kommandon, och i händelse av problem, låter dig rulla tillbaka ändringar. All data är helt cachad i RAM.

Kommandon som ökning/minskning, standardlista och inställningsoperationer (union, korsning), byte av nycklar, flera val och sorteringsfunktioner tillhandahålls för datahantering. Två lagringslägen stöds: periodisk synkronisering av data till disk och underhåll av en ändringslogg på disk. I det andra fallet garanteras fullständig säkerhet för alla ändringar. Det är möjligt att organisera master-slav-datareplikering till flera servrar, utförd i ett icke-blockerande läge. Ett meddelandeläge "publicera/prenumerera" är också tillgängligt, där en kanal skapas, varifrån meddelanden distribueras till kunder via prenumeration.

Viktiga ändringar i Redis 7.0:

  • Tillagt stöd för funktioner på serversidan. Till skillnad från tidigare stödda skript på Lua-språket är funktionerna inte knutna till applikationen och syftar till att implementera ytterligare logik som utökar serverns kapacitet. Funktioner bearbetas oupplösligt med data och i relation till databasen, och inte till applikationen, inklusive att replikeras och lagras i beständig lagring.
  • En andra utgåva av ACL har föreslagits, som låter dig styra åtkomst till data baserat på nycklar och låter dig definiera olika uppsättningar regler för åtkomst av kommandon med möjligheten att binda flera väljare (uppsättningar av behörigheter) till varje användare. Varje nyckel kan identifieras med en specifik auktoritet, till exempel kan du begränsa åtkomsten till att endast läsa eller skriva en viss delmängd av nycklar.
  • En partitionerad (delad) implementering av Publish-Subscribe meddelandedistributionsparadigmet som körs i ett kluster tillhandahålls, där ett meddelande skickas till en specifik nod till vilken en meddelandekanal är kopplad, varefter detta meddelande omdirigeras till de återstående noderna som ingår i skärvan. Klienter kan ta emot meddelanden genom att prenumerera på en kanal, både genom att ansluta till huvudnoden och till sektionens sekundära noder. Kontrollen utförs med kommandona SSUBSCRIBE, SUNSUBSCRIBE och SPUBLISH.
  • Lade till stöd för bearbetning av underkommandon i de flesta sammanhang.
  • Nya kommandon tillagda:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCANELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • KOMMANDODOKUMENT, KOMMANDOLISTA.
    • LATENS HISTOGRAM.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • KLIENT INGEN VÄKNING.
    • ACL DRYRUN.
  • Möjligheten att behandla flera konfigurationer samtidigt i ett CONFIG SET/GET-anrop har tillhandahållits.
  • Alternativen "-json", "-2", "-scan", "-functions-rdb" har lagts till i verktyget redis-cli.
  • Som standard är klientåtkomst till inställningar och kommandon som påverkar säkerheten inaktiverade (till exempel är kommandona DEBUG och MODULE inaktiverade, det är förbjudet att ändra konfigurationer med flaggan PROTECTED_CONFIG). Redis-cli matar inte längre ut kommandon som innehåller känslig data till en historikfil.
  • En stor del av optimeringar har införts som syftar till att öka prestanda och minska minnesförbrukningen. Till exempel har minnesförbrukningen minskat avsevärt när du aktiverar klusterläge, när du utför kopiera-på-skriv-operationer och när du arbetar med hash- och zset-nycklar. Förbättrad logik för att spola data till disk (fsync-anrop). Antalet nätverkspaket och systemanrop när svar skickas till klienten har minskat. Replikeringseffektiviteten har förbättrats.
  • Sårbarheten CVE-2022-24735 i miljön för exekvering av Lua-skript har åtgärdats, vilket gör att du kan ersätta din egen Lua-kod och få dess exekvering i en annan användares sammanhang, inklusive en med högre behörighet.
  • Fixad sårbarhet CVE-2022-24736, som gör att redis-serverprocessen kraschar på grund av NULL-pekaredereferens. Attacken utförs genom laddning av specialdesignade Lua-skript.

Källa: opennet.ru

Lägg en kommentar