Redis-projektet er vendt tilbage til brugen af en åben licens. Redis 8.0 er nu tilgængelig

Virksomheden Redis Ltd har annonceret en ændring af licenspolitikken for projektet. Fra version 8.0 af Redis vil koden være tilgængelig under den frie AGPLv3-licens. Overgangen til en åben licens blev muliggjort ved, at Salvatore Sanfilippo, skaberen af databasen Redis, vendte tilbage til virksomheden. Efter sin afgang fra Redis Ltd udviklede Salvatore et sæt vektorsæt (Vector Sets), som han var klar til at integrere i Redis, men ønskede, at den kode, han havde skabt, blev leveret under en åben licens. Salvatore lykkedes med at overbevise sine kolleger om fordelene ved at genoprette projektets åbne natur og forbedre interaktionen med fællesskabet.

Rowan Trollope, direktør for Redis Ltd, udtalte, at overgangen til proprietære licenser sidste år havde nået sit mål, idet virksomhederne AWS og Google stiftede en fork og begyndte at deltage i fælles udvikling og dele deres tidligere arbejde. Samtidig skadede skiftet i licenser forholdet til fællesskabet, som virksomheden nu vil forsøge at genoprette ved at vende tilbage til levering af koden under en fri licens.

Efter overgangen til proprietære licenser blev udviklingen af den åbne kodebase for Redis fortsat i forkerne Valkey (en fork udviklet med deltagelse fra Amazon, Google, Oracle, Ericsson og Snap), Redict (en fork af skaberen af brugergrænsefladen Sway og sproget Hare), Garnet (en database fra Microsoft kompatibel med Redis) og KeyDB (en højtydende fork af Redis 5 fra Snapchat). I repositoryerne for distributioner som Debian 13, Ubuntu 24.10, Fedora 41, RHEL 10, Azure Linux 3, Arch Linux og Alpine 3.20 er Redis-pakken blevet erstattet med Valkey-forken.

Oprindeligt blev Redis udgivet under en tilladende BSD-licens, som tillod ikke at åbne for sine ændringer, hvorefter det overgik til de proprietære licenser RSALv2 (Redis Source Available License v2) og SSPLv1 (Server Side Public License v1). Fra og med Redis 8 er koden for projektet tilgængelig under AGPLv3-licensen, hvis særpræg er tilstedeværelsen af begrænsninger for applikationer, der muliggør drift af netværkstjenester. Ved brug af AGPL-komponenter i driften af netværkstjenester, er udvikleren forpligtet til at give brugeren adgang til kildekoden for alle ændringer, der er lavet til disse komponenter, selvom den underliggende software ikke distribueres og kun bruges internt i infrastrukturen til at organisere driften af tjenesten. AGPLv3-licensen er kompatibel med GPLv3, men konflikerer med GPLv2-licensen.

De licenser, der tidligere blev brugt, SSPL og RSAL, førte til diskriminering af visse brugerkategorier, hvilket ikke tillod at betragte dem som åbne eller frie. Begge licenser har lignende formål, men forskellene ligger i, at SSPL-licensen er baseret på copyleft-licensen AGPLv3, mens RSAL-licensen er baseret på den tilladende BSD-licens. RSAL-licensen tillader brug, ændring, distribution og integration af koden i applikationer, med undtagelse af tilfælde, hvor disse applikationer er kommercielle eller bruges til at tilbyde administrerede betalte tjenester. SSPL-licensen inkluderer desuden et krav om levering under samme licens ikke kun af koden til selve applikationen, men også af kildekoderne til alle de komponenter, der er involveret i levering af cloudtjeneste.

Samtidig med meddelelsen om ændringen af licensen blev Redis 8.0 frigivet. Selvom frigivelsen er blevet annonceret, er der i øjeblikket kun lagt en kandidat til frigivelse ud i repository'et, og linket til download af Redis 8.0 på projektets hjemmeside fører til en side med en generel beskrivelse af installationsprocessen. I bemærkningen til frigivelsen er der også indtil videre kun blevet bemærket frigivelsen 8.0-RC1.

De væsentlige ændringer i Redis 8.0:

  • Der er tilføjet en datatype til opbevaring af vektordatasæt, der er efterspurgt i maskinlæringssystemer og semantisk søgning. Vektorsæt (vector set) udvider den tidligere tilgængelige funktionalitet af ordnede sæt (sorted set) med muligheden for at lagre multidimensionale vektorer. Der er tilføjet 11 nye kommandoer til manipulation af vektordata, såsom VADD, VREM og VSIM.
  • Redis Query Engine, JSON, Time Series og Probabilistic Data Types-modulerne er blevet integreret i kernen af Redis og distribueres tidligere som separate Redis Stack-udvidelser.
  • Integration af en datstruktur til JSON, der tillader lagring af dokumenter i JSON-format knyttet til nøgler i Redis. For selektiv udtrækning af JSON-dokumenter og adgang til enkelte elementer kan JSONPath forespørgselssprog anvendes. Der er støtte til atomiske opdateringer, der tillader ændringer i individuelle felter i JSON-dokumentet uden at indlæse hele dokumentet.
  • Der er tilføjet støtte til datatyper i form af tidsserier (hvor en post danner et tidsstempel og et sæt værdier relateret til dette tidsstempel, f.eks. opnået ved periodisk afstemning af sensorstatus eller indsamling af metrics). For at reducere hukommelsesforbruget er der implementeret kompressionsalgoritmer for sådanne data og mulighed for at definere regler for nedskæring af arkiverede data (downsampling).
  • Der er tilføjet probabilistiske datatyper: Bloom filter, Cuckoo filter, Count-min sketch, Top-k og t-digest, som drastisk reducerer lagerstørrelsen, når der er behov for at gemme meget store datamængder ved at tillade en vis nøjagtighedsfejl ved visse operationer. "Bloom filter" og "Cuckoo filter" tillader kontrol af medlemskab i mængder, med tilladelse til falske bestemmelser om fraværende elementer, men udelukker overspring af eksisterende elementer. "Count-min sketch" forudsiger antallet af nævnelser af en værdi i en mængde. "Top-k" gør det muligt at finde de mest hyppige værdier. "T-digest" giver mulighed for at udføre stikprøver af værdier, der er større eller mindre end en angiven værdi.
  • En motor kaldet "Redis Query Engine" er inkluderet, som understøtter vektorbaseret søgning og giver muligheder for at organisere dataudtræk baseret på indhold snarere end nøgler. Redis Query Engine gør det muligt at oprette yderligere indekser for data placeret i hashes og JSON-dokumenter.
  • Udvidet understøttelse af ACL (Access Control Lists), der gør det muligt at styre adgang til data baseret på nøgler og tillader fastsættelse af forskellige sæt adgangsregler for kommandoer med mulighed for at binde beføjelser til hver enkelt bruger. For eksempel kan man med ACL definere hvilke brugere der kan oprette forbindelse til Redis, hvilke nøgler en bruger har adgang til, og hvilke kommandoer de kan udføre. I Redis 8 er der tilføjet nye kategorier af ACL til nye datatyper.
  • Nye kommandoer til arbejde med hashes er blevet tilføjet:
    • HGETDEL — udleverer og sletter felter i en hash ved angivet nøgle.
    • HGETEX — udleverer felter i en hash ved angivet nøgle og angiver en levetid for dem.
    • HSETEX — sætter felter i en hash ved angivet nøgle og angiver en levetid for dem.
  • Der er foretaget over 30 optimeringer af ydeevnen, som i nogle tests har ført til en accelerering af kommandoeksekvering på 87%, en stigning i båndbredde på 112%, en acceleration af replikation på 18% og acceleration af forespørgsler i Redis Query Engine op til 16 gange (gennem horisontal og vertikal skala). Ved at gennemføre et sæt på 149 tests blev 90 kommandoer udført hurtigere. Båndbredden er steget betydeligt takket være overgangen til multitrådet drift af komponenter til kommandoanalyse, behandling af klientanmodninger, læsning og skrivning i netværkssokler. En ny implementering af mekanismen til multitrådet I/O-håndtering (io-threads) er blevet foreslået.
  • En ny replikationsmekanisme er præsenteret, som bruger 35% mindre hukommelse og arbejder 18% hurtigere. For at undgå blokeringer er der taget to separate replikationstråde i brug - en til at overføre ændringer til hovednoden, og en anden til at overføre ændringer til mellemledsnoder.

For managing data in the Redis DBMS, commands such as increment/decrement, standard operations on lists and sets (union, intersection), renaming keys, multiple selections, and sorting functions are provided. Two storage modes are supported: periodic data synchronization to disk and maintaining a log of changes on disk. In the latter case, full preservation of all changes is guaranteed. Transactions are supported, allowing a group of commands to be executed in one step, ensuring consistency and order (commands from other requests cannot interrupt) of the execution of a given set of commands, and allowing changes to be rolled back in case of issues.

It is possible to organize master-slave data replication across multiple servere, carried out in a non-blocking mode. A publish/subscribe messaging mode is also available, in which a channel is created, and messages from it are distributed to subscribing clients. All data is fully cached in RAM. Client libraries are available for most popular languages, including Perl, Python, PHP, Java, Ruby, Tcl, JavaScript/Node.js, Go, and C#.

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