Företaget Redis Ltd har meddelat en förĂ€ndring av licenspolicyn för projektet. FrĂ„n och med version 8.0 av Redis blir projektkoden tillgĂ€nglig under den fria licensen AGPLv3. ĂvergĂ„ngen till en öppen licens möjliggjordes av Salvatore Sanfilippo, skaparen av databashanteraren Redis, som Ă„tervĂ€nde till företaget. Efter sin avgĂ„ng frĂ„n Redis Ltd utvecklade Salvatore en uppsĂ€ttning vektorbaserade tillĂ€gg (Vector Sets) som han ville inkludera i Redis, men ville att den kod han skapade skulle levereras under en öppen licens. Salvatore lyckades övertyga sina kollegor om fördelarna med att Ă„terstĂ€lla projektets öppna natur och förbĂ€ttra samarbetet med gemenskapen.
Rowan Trollope, direktör för Redis Ltd, sade att övergÄngen till proprietÀra licenser som gjordes förra Äret har nÄtt sitt syfte, dÄ företagen AWS och Google har grundat en fork, börjat delta i det gemensamma arbetet och dela med sig av sina tidigare prestationer. Samtidigt skadade licensbytet relationerna med gemenskapen, vilket företaget nu kommer att försöka ÄterstÀlla genom att ÄtergÄ till att leverera koden under en fri licens.
Efter övergÄngen till proprietÀra licenser fortsatte utvecklingen av den öppna kodbasen för Redis i forks som Valkey (en fork utvecklad med deltagande frÄn Amazon, Google, Oracle, Ericsson och Snap), Redict (en fork skapad av författaren till anvÀndargrÀnssnittet Sway och sprÄket Hare), Garnet (en databashanterare frÄn Microsoft som Àr kompatibel med Redis) och KeyDB (ett högpresterande fork av Redis 5 frÄn Snapchat). I distributionsrepositorierna för Debian 13, Ubuntu 24.10, Fedora 41, RHEL 10, Azure Linux 3, Arch Linux och Alpine 3.20 har paketet Redis ersatts med fork Valkey.
Ursprungligen slÀpptes Redis under en tillstÄndslicens BSD, som tillÀt att man inte behövde öppna sina Àndringar, dÀrefter övergick man till proprietÀra licenser RSALv2 (Redis Source Available License v2) och SSPLv1 (Server Side Public License v1). FrÄn och med Redis 8 Àr projektkoden tillgÀnglig under AGPLv3-licensen, vars sÀrdrag Àr att den har begrÀnsningar för applikationer som tillhandahÄller nÀtverkstjÀnster. Vid anvÀndning av AGPL-komponenter i nÀtverkstjÀnster Àr utvecklaren skyldig att tillhandahÄlla anvÀndaren kÀllkoden för alla Àndringar som gjorts i dessa komponenter, Àven om den programvara som ligger till grund för tjÀnsten inte sprids och anvÀnds uteslutande i den interna infrastrukturen för drift av tjÀnsten. AGPLv3-licensen Àr kompatibel med GPLv3, men stÄr i konflikt med GPLv2-licensen.
De licenser som tidigare anvÀndes, SSPL och RSAL, ledde till diskriminering av vissa anvÀndarkategorier, vilket gjorde att de inte kunde betraktas som öppna eller fria. BÄda licenserna Àr likvÀrdiga i sina syften, och skillnaderna ligger i att SSPL-licensen Àr baserad pÄ copyleft-licensen AGPLv3, medan RSAL-licensen bygger pÄ den permissiva BSD-licensen. RSAL-licensen tillÄter anvÀndning, modifiering, distribution och integrering av koden i applikationer, utom i fall dÀr dessa applikationer Àr kommersiella eller anvÀnds för att tillhandahÄlla hanterade betaltjÀnster. SSPL-licensen innehÄller dessutom ett krav pÄ att leverera, under samma licens, inte bara koden för sjÀlva applikationen, utan Àven kÀllkoden för alla komponenter som Àr involverade i tillhandahÄllandet av molntjÀnsten.
Samtidigt som meddelandet om licensbytespresentationen presenterades releasen Redis 8.0. Trots meddelandet om tillgÀngligheten av releasen finns det dock för nÀrvarande endast en kandidat för releaser i repositoryt, och lÀnken för att ladda ner Redis 8.0 pÄ projektets webbplats leder till en sida med allmÀn information om installationsprocessen. I releasenotisen har endast version 8.0-RC1 markerats hittills.
Huvudsakliga förÀndringar i Redis 8.0:
- En ny datatyp för lagring av vektoruppsÀttningar som efterfrÄgas i maskininlÀrningssystem och semantisk sökning har lagts till. VektoruppsÀttningar (vector set) utökar den tidigare tillgÀngliga funktionen av sorterade uppsÀttningar (sorted set) med möjlighet att lagra flerdimensionella vektorer. För att manipulera vektordata har 11 nya kommandon lagts till, sÄsom VADD, VREM och VSIM.
- Modulerna Redis Query Engine, JSON, Time Series och Probabilistic Data Types har flyttats till kÀrnan av Redis, tidigare tillhandahÄllna som fristÄende tillÀgg i Redis Stack.
- Stödet för datatypen JSON har integrerats, vilket möjliggör lagring av JSON-dokument kopplade till nycklar i Redis. För selektiv extraktion av JSON-dokument och Ätkomst till individuella element kan frÄgesprÄket JSONPath anvÀndas. Stöd för atomiska uppdateringar finns ocksÄ, vilket tillÄter Àndringar av enskilda fÀlt i JSON-dokumentet utan att ladda hela dokumentet.
- Stödet för datatyper i form av tidsserier har lagts till (en post bildar en tid och ett antal motsvarande vÀrden, exempelvis erhÄllna genom periodisk avlÀsning av sensorers tillstÄnd eller insamling av mÀtdata). För att minska minnesförbrukningen har algoritmer för komprimering av liknande data anvÀnts och möjligheten att definiera regler för nedskÀrning av arkiverade data (downsampling) har lagts till.
- Sannolikhetsbaserade datatyper har lagts till: Bloom-filter, Cuckoo-filter, Count-min-sketch, Top-k och t-digest, vilket möjliggör avsevÀrt minskad lagringsstorlek nÀr mycket stora datamÀngder lagras genom att acceptera en viss grad av felaktighet vid vissa operationer. Bloom-filter och Cuckoo-filter gör det möjligt att kontrollera medlemskap i en mÀngd, vilket medger falska positiva men utesluter att ett existerande element missas. Count-min-sketch förutsÀger antalet förekomster av ett vÀrde i en mÀngd. Top-k möjliggör att hitta de mest frekvent förekommande vÀrdena. T-digest ger möjlighet att ta urval av vÀrden som Àr större eller mindre Àn ett angivet vÀrde.
- Redis Query Engine har inkluderats med stöd för vektorbaserad sökning och möjligheter att skapa urval baserat pÄ innehÄll snarare Àn pÄ nycklar. Redis Query Engine gör det möjligt att skapa ytterligare index för data som lagras i hash-ar och JSON-dokument.
- Utvidet stÞtte for ACL (Access Control Lists) som gjÞr det mulig Ä administrere datatilgang basert pÄ nÞkler, og som tillater definisjon av forskjellige tilgangsregler for kommandoer med mulighet for Ä knytte sett med fullmakter til hver bruker. For eksempel, ved hjelp av ACL kan man bestemme hvilke brukere som kan koble seg til Redis, hvilke nÞkler en bruker har tilgang til, og hvilke kommandoer de kan utfÞre. I Redis 8 er det lagt til nye kategorier av ACL for nye datatyper.
- Nye kommandoer for arbeid med hasher er lagt til:
- HGETDEL â hent og slett feltene i hashen for den angitte nĂžkkelen.
- HGETEX â hent feltene i hashen for den angitte nĂžkkelen og spesifiser levetiden for dem.
- HSETEX â sett feltene i hashen for den angitte nĂžkkelen og spesifiser levetiden for dem.
- Over 30 ytelsesoptimaliseringer er implementert, noe som i noen tester fÞrer til en hastighetsÞkning pÄ 87 %, Þkt gjennomstrÞmning pÄ 112 %, 18 % raskere replikasjon og opp til 16 ganger raskere spÞrring i Redis Query Engine (takket vÊre horisontal og vertikal skalering). Ved gjennomfÞring av et sett med 149 tester ble 90 kommandoer raskere. GjennomstrÞmningen har Þkt betydelig, takket vÊre overgangen til flertrÄdet arbeid for komponentene for kommandoanalyse, kundespÞrsmÄl, samt inn- og utlesing fra nettverks-sokler. En ny implementering av flertrÄdet I/O-behandling (io-threads) er foreslÄtt.
- En ny replikasjonsmekanisme er introdusert, som bruker 35 % mindre minne og er 18 % raskere. For Ă„ unngĂ„ lĂ„sing er det benyttet to separate replikasjonstrĂ„der â Ă©n for Ă„ overfĂžre endringer til hovednoden, og en annen for Ă„ overfĂžre endringer til mellomnoder.
För att hantera data i databasen Redis erbjuds kommandon sÄsom inkrementering/dekrementering, standardoperationer för listor och mÀngder (förening, snitt), omdöpning av nycklar, flera urval och sorteringsfunktioner. TvÄ lagringslÀgen stöds: periodisk synkronisering av data pÄ disk och loggning av förÀndringar pÄ disk. I det andra fallet garanteras fullstÀndig bevarande av alla förÀndringar. Transaktioner stöds, vilket gör att grupper av kommandon kan utföras i ett steg, vilket garanterar konsistens och sekventiell utförande av det angivna kommandoset, utan möjlighet för kommandon frÄn andra förfrÄgningar att blanda sig, och i fall av problem kan förÀndringar rullas tillbaka.
Det Àr möjligt att organisera master-slave-replikering av data till flera servrar, som genomförs i icke-blockerande lÀge. Det finns Àven ett meddelandesystem för "publicering/prenumeration", dÀr en kanal skapas som sprider meddelanden till prenumererande kunder. All data cachas helt i RAM-minnet. Klientbibliotek finns tillgÀngliga för de flesta populÀra sprÄk, inklusive Perl, Python, PHP, Java, Ruby, Tcl, JavaScript/Node.js, Go och C#.
KĂ€lla: opennet.ru
