Redis 7.0 har slÀppts och tillhör klassen av NoSQL-system. Redis erbjuder funktioner för datalagring i nyckel/vÀrde-format, med utökad support för strukturerade dataformat som listor, hash-mappar och mÀngder, samt möjligheten att köra server-side skript pÄ Lua. Projektets kod distribueras under BSD-licens. Ytterligare moduler som erbjuder utökade funktioner för företagsanvÀndare, sÄsom RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, har sedan 2019 distribuerats under den proprietÀra RSAL-licensen. Utvecklingen av öppna alternativ till dessa moduler under AGPLv3-licens har försökt fortsÀtta av projektet GoodFORM, som pÄ sista tiden har varit i stagnering.
Till skillnad frÄn minneslagringssystem som Memcached, erbjuder Redis bestÀndig datalagring pÄ disk och garanterar databasens integritet vid krasch. Projektets kÀllkoder sprids under BSD-licens. Klientbibliotek Àr tillgÀngliga för de flesta populÀra sprÄk, inklusive Perl, Python, PHP, Java, Ruby och Tcl. Redis stödjer transaktioner, som möjliggör genomförandet av en mÀngd kommandon i ett steg, vilket garanterar konsistens och sekvens (kommandon frÄn andra förfrÄgningar kan inte avbryta) i utförandet av en given uppsÀttning kommandon, och ger ocksÄ möjlighet att Ängra Àndringar vid problem. All data cachas i sin helhet i minnet.
För datahantering finns kommandon som inkrementera/Decrementera, standardoperationer för listor och mÀngder (förening, snitt), omdöpning av nycklar, multipla urval och sorteringsfunktioner. TvÄ lagringslÀgen stöds: periodisk synkronisering av data till disk och loggning av Àndringar pÄ disk. I det andra fallet garanteras fullstÀndig bevarande av alla Àndringar. Master-slave replicering av data kan ordnas pÄ flera servrar, vilket sker i icke-blockerande lÀge. Det finns Àven ett meddelandeutbyteslÀge för "publicering/prenumeration", dÀr en kanal skapas och meddelanden frÄn den distribueras till prenumeranter.
NyckelförÀndringar i Redis 7.0:
- Stöd för funktioner som körs pÄ servern har lagts till servern. Till skillnad frÄn tidigare stödda skript pÄ Lua Àr funktionerna inte bundna till applikationen och syftar till att implementera ytterligare logik som utökar serverns kapabiliteter. Funktionerna bearbetas oavbrutet med data och kopplas till databasen snarare Àn till applikationen, inklusive replikering och lagring i bestÀndig lagring.
- En andra version av ACL har föreslagits, vilket möjliggör datatillgÄngshantering baserat pÄ nycklar och tillÄter definition av olika uppsÀttningar av Ätkomstrider för kommandon med möjlighet att binda flera selektorer (uppsÀttningar av rÀttigheter) till varje anvÀndare. Varje nyckel kan kopplas till specifika rÀttigheter, till exempel kan tillgÄngen begrÀnsas till endast lÀsning eller skrivning av en viss delmÀngd av nycklar.
- En fungerande sektionerad (sharded) implementering av publicerings- och abonnemangsparadigmet (Publish-Subscribe) har tillhandahÄllits, dÀr meddelandet skickas till en specifik nod som Àr kopplad till meddelandekanalen, varefter detta meddelande omdirigeras till de andra noderna inom sektionen (shard). Kunder kan prenumerera pÄ meddelanden frÄn kanalen, bÄde genom att ansluta till huvudnoden och till sekundÀra noder i sektionen. Hantering görs med hjÀlp av kommandona SSUBSCRIBE, SUNSUBSCRIBE och SPUBLISH.
- Stöd för hantering av underkommandon har lagts till i de flesta kontexter.
- Nya kommandon har lagts till:
- 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.
- Möjlighet att bearbeta flera konfigurationer i ett enda CONFIG SET/GET-anrop har tillhandahÄllits.
- Nya alternativ har lagts till i verktyget redis-cli: "âjson", "-2", "âscan", "âfunctions-rdb".
- Som standard Àr tillgÄng för klienter till instÀllningar och kommandon som pÄverkar sÀkerhet (t.ex. kommandon DEBUG och MODULE Àr avstÀngda, Àndringar av konfigurationer med PROTECTED_CONFIG-flagg Àr förbjudna) avstÀngd. Utskrift av kommandohistorik med konfidentiella uppgifter i redis-cli har upphört.
- En stor mÀngd optimeringar har införts för att öka prestanda och minska minnesförbrukningen. Till exempel har minnesförbrukningen vid aktivering av klusterlÀge, vid utförande av copy-on-write-operationer och vid arbete med hash och zset-nycklar minskat avsevÀrt. Logiken för att skriva data till disk (anrop av fsync) har förbÀttrats. Antalet nÀtverkspaket och systemanrop vid sÀndning av svar till klienten har minskat. Effektiviteten i replikationen har ökats.
- SÄrbarheten CVE-2022-24735 i Lua-skriptkörningsmiljön har ÄtgÀrdats, vilket gör det möjligt att ersÀtta sin egen Lua-kod och fÄ den att köras i kontexten av en annan anvÀndare, inklusive en med högre privilegier.
- SÄrbarheten CVE-2022-24736 har ÄtgÀrdats, vilket möjliggör att processen redis-server kraschar pÄ grund av dereferensiering av en nullpekare. Attacken utförs genom att ladda speciellt utformade Lua-skript.
KĂ€lla: opennet.ru
