Het Redis-project is teruggekeerd naar het gebruik van een open licentie. Redis 8.0 is geĆÆntroduceerd.

Het bedrijf Redis Ltd heeft aangekondigd zijn licentiebeleid te veranderen. Vanaf de release van Redis 8.0 is de code van het project beschikbaar onder de vrije AGPLv3-licentie. De overstap naar een open licentie werd mogelijk gemaakt door de terugkeer van Salvatore Sanfilippo, de maker van de Redis-database, naar het bedrijf. Na zijn vertrek uit Redis Ltd ontwikkelde Salvatore een set vector uitbreidingen (Vector Sets), die hij wilde integreren in Redis, maar hij wilde dat de door hem ontwikkelde code onder een open licentie werd geleverd. Salvatore slaagde erin zijn collega's te overtuigen van de noodzaak om de open aard van het project te herstellen en de samenwerking met de gemeenschap te verbeteren.

Rowan Trollope, de directeur van Redis Ltd, verklaarde dat de overstap naar propriƫtaire licenties vorig jaar zijn doel heeft bereikt, aangezien AWS en Google een fork hebben opgericht, zijn gaan deelnemen aan de gezamenlijke ontwikkeling en hun eerdere kennis delen. Tegelijkertijd heeft de verandering van licenties de relaties met de gemeenschap schade berokkend, die het bedrijf nu probeert te herstellen door de code weer onder een vrije licentie aan te bieden.

Na de overstap naar propriƫtaire licenties werd de ontwikkeling van de open codebasis van Redis voortgezet in forks zoals Valkey (een fork ontwikkeld met deelname van Amazon, Google, Oracle, Ericsson en Snap), Redict (fork van de auteur van de gebruikersinterface Sway en de taal Hare), Garnet (gegevenssysteem van Microsoft, compatibel met Redis) of KeyDB (Hoge prestaties fork van Redis 5 van Snapchat). In de repositories van de distributies Debian 13, Ubuntu 24.10, Fedora 41, RHEL 10, Azure Linux 3, Arch Linux en Alpine 3.20 is het Redis-pakket vervangen door de fork Valkey.

Oorspronkelijk werd Redis geleverd onder de permissieve BSD-licentie, die het mogelijk maakte om wijzigingen niet openbaar te maken. Later ging het over op propriƫtaire licenties RSALv2 (Redis Source Available License v2) en SSPLv1 (Server Side Public License v1). Sinds Redis 8 is de projectcode beschikbaar onder de AGPLv3-licentie, waarvan de speciale eigenschap is dat er beperkingen zijn voor applicaties die netwerkservices ondersteunen. Bij het gebruik van AGPL-componenten in netwerkservices is de ontwikkelaar verplicht de gebruiker de broncode van alle aangebrachte wijzigingen in deze componenten te bieden, zelfs als de onderliggende software niet wordt verspreid en uitsluitend gebruikt wordt voor interne infrastructuur om de werking van de service te organiseren. De AGPLv3-licentie is compatibel met GPLv3, maar conflicteert met de GPLv2-licentie.

De eerder gebruikte SSPL- en RSAL-licenties leidden tot discriminatie van bepaalde gebruikerscategorieƫn, waardoor ze niet als open of vrij konden worden beschouwd. Qua doelstellingen lijken beide licenties op elkaar, het verschil is dat de SSPL-licentie is gebaseerd op de copyleft-licentie AGPLv3, terwijl de RSAL-licentie is gebaseerd op de permissieve BSD-licentie. De RSAL-licentie staat het gebruik, de wijziging, verspreiding en integratie van de code in applicaties toe, behalve wanneer deze applicaties commercieel zijn of worden gebruikt voor het aanbieden van beheerde betaalde diensten. De SSPL-licentie bevat bovendien de eis om onder dezelfde licentie niet alleen de code van de applicatie zelf te leveren, maar ook de bronbestanden van alle componenten die betrokken zijn bij het leveren van de cloudservice.

Tegelijkertijd met de aankondiging van de wijziging van de licentie werd de release van Redis 8.0 gepresenteerd. Echter, ondanks de aankondiging van de beschikbaarheid van de release, is er in de repository tot nu toe alleen een releasekandidaat geplaatst, en de link voor het downloaden van Redis 8.0 op de projectwebsite leidt naar een pagina met een algemene beschrijving van het installatieproces. In de opmerking bij de release is tot nu toe alleen de release 8.0-RC1 vermeld.

De belangrijkste wijzigingen in Redis 8.0:

  • Een type voor het opslaan van vectorgegevenssets is toegevoegd, die vereist zijn in machine learning-systemen en semantisch zoeken. Vector sets breiden de eerder beschikbare functionaliteit van gesorteerde lijsten uit met de mogelijkheid om multidimensionale vectoren op te slaan. Voor het manipuleren van vectorgegevens zijn 11 nieuwe commando's toegevoegd, zoals VADD, VREM en VSIM.
  • De modules Redis Query Engine, JSON, Time Series en Probabilistic Data Types zijn overgebracht naar de kern van Redis, die eerder als aparte extensies in Redis Stack werden geleverd.
  • Integratie van ondersteuning voor de datastructuur JSON, waarmee documenten in JSON-formaat kunnen worden opgeslagen gekoppeld aan sleutels in Redis. Voor selectieve extractie van JSON-documenten en toegang tot individuele elementen kan de JSONPath-querytaal worden gebruikt. Ondersteuning voor atomische updates is aanwezig, waarmee wijzigingen in individuele velden van een JSON-document kunnen worden aangebracht zonder het hele document te laden.
  • Ondersteuning voor datastructuren in de vorm van tijdreeksen is toegevoegd (een record vormt tijd en een set bijbehorende waarden, bijvoorbeeld verkregen door periodieke polling van sensors of het verzamelen van metrics). Om het geheugengebruik te verminderen, zijn compressie-algoritmen voor dergelijke gegevens ingezet en is de mogelijkheid gecreĆ«erd om regels voor het downsamplen van archiefgegevens vast te stellen.
  • Probabilistische datastructuren zijn toegevoegd: Bloom-filter, Cuckoo-filter, Count-min sketch, Top-k en t-digest, die de opslagcapaciteit aanzienlijk verminderen bij de noodzaak om zeer grote datavolumes op te slaan, ten koste van precisieverlies bij het uitvoeren van bepaalde operaties. Het Bloom-filter en het Cuckoo-filter maken het mogelijk om te controleren op lidmaatschap in een set, met een kans op een vals negatief, maar zonder het overslaan van een bestaand element. De Count-min sketch voorspelt het aantal vermeldingen van een waarde in de set. Top-k maakt het mogelijk om de meest voorkomende waarden te vinden. T-digest geeft de mogelijkheid om waarden te extraheren die groter of kleiner zijn dan een bepaalde waarde.
  • De Redis Query Engine is geĆÆntegreerd met ondersteuning voor vector searching en mogelijkheden voor het creĆ«ren van sets op basis van inhoud in plaats van op sleutels. Redis Query Engine stelt gebruikers in staat om extra indexen te maken voor gegevens opgeslagen in hashes en JSON-documenten.
  • Uitgebreide ondersteuning voor ACL (Access Control Lists), waarmee toegang tot gegevens kan worden beheerd op basis van sleutels en waarmee verschillende sets toegangspolicies voor commando's kunnen worden gedefinieerd, met de mogelijkheid om machtigingssets aan elke gebruiker te koppelen. Met ACL kan bijvoorbeeld worden bepaald welke gebruikers verbinding kunnen maken met Redis, welke sleutels een gebruiker toegang toe heeft en welke commando's hij kan uitvoeren. In Redis 8 zijn er nieuwe categorieĆ«n ACL toegevoegd voor nieuwe datastructuren.
  • Nieuwe commando's toegevoegd voor het werken met hashes:
    • HGETDEL — geef het hashveld terug en verwijder het op basis van de opgegeven sleutel.
    • HGETEX — geef het hashveld terug op basis van de opgegeven sleutel en stel een levensduur in.
    • HSETEX — stel het hashveld in op basis van de opgegeven sleutel en stel een levensduur in.
  • Meer dan 30 prestatieoptimalisaties zijn doorgevoerd, wat in sommige tests heeft geleid tot een versnelling van de uitvoer van commando's met 87%, een verhoging van de doorvoersnelheid met 112%, een versnelling van replicatie met 18% en een versnelling van de selectie in de Redis Query Engine tot 16 keer (door horizontale en verticale schaling). Bij het doorlopen van een set van 149 tests werden 90 commando's sneller uitgevoerd. De doorvoersnelheid is aanzienlijk toegenomen dankzij de overstap op multi-threaded werking van de componenten voor het parseren van commando's, de verwerking van klantrequests, en het lezen en schrijven naar netwerksockets. Er is een nieuwe implementatie van het multi-threaded invoer/uitvoermechanisme (io-threads) voorgesteld.
  • Een nieuw replicatiemechanisme is geĆÆntroduceerd, dat 35% minder geheugen verbruikt en 18% sneller werkt. Om blokkeringen te voorkomen, zijn er twee aparte replicatiestromen ingezet: ƩƩn voor het verzenden van wijzigingen naar de hoofdnode en een andere voor het verzenden van wijzigingen naar tussenliggende nodes.

Voor het beheren van gegevens in de Redis-database worden commando's zoals incremente/decremente, standaardbewerkingen op lijsten en verzamelingen (samenvoegen, kruisen), het hernoemen van sleutels, meerdere selecties en sorteermethoden aangeboden. Er zijn twee opslagmodi beschikbaar: periodieke synchronisatie van gegevens naar de schijf en het bijhouden van een wijzigingslog op de schijf. In het tweede geval is volledige veiligheid van alle wijzigingen gegarandeerd. Transacties worden ondersteund, waardoor een groep commando's in ƩƩn stap kan worden uitgevoerd en consistentie en volgorde worden gewaarborgd (commando's van andere aanvragen kunnen zich niet mengen) tijdens de uitvoering van de opgegeven set commando's, en in het geval van problemen kunnen wijzigingen worden teruggedraaid.

Het is mogelijk om master-slave replicatie van gegevens op meerdere servers, uitgevoerd in een niet-blokkerende modus. Er is ook een berichtenuitwisselingsmodus 'publicatie/abonnement', waarbij een kanaal wordt gecreƫerd waarvan de berichten worden verspreid naar clients die zich hebben geabonneerd. Alle gegevens worden in zijn geheel in het werkgeheugen gecached. Klantbibliotheken zijn beschikbaar voor de meeste populaire talen, waaronder Perl, Python, PHP, Java, Ruby, Tcl, JavaScript/Node.js, Go en C#.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster