Redis Ltd teatas projekti litsentsipoliitika muutmisest. Alates Redis 8.0 vĂ€ljaandmisest on projekti kood saadaval avatud AGPLv3 litsentsi alusel. Avatud litsentsile ĂŒlemineku vĂ”imaldas Salvatore Sanfilippo, Redis andmebaasi looja, naasmine ettevĂ”ttesse. PĂ€rast lahkumist Redis Ltd-st arendas Salvatore vĂ€lja vektorsete laienduste komplekti (Vector Sets), mille ta sooviks Redis koostöösse anda, kuid soovis, et tema loodud kood oleks avatud litsentsi all. Salvatore suutis veenda oma kolleege projekti avatud iseloomu taastamise ja kogukonna suhtlemise parandamise otstarbekuses.
Rowan Trollope, Redis Ltd direktor, mĂ€rkis, et eelmisel aastal toimunud ĂŒleminek proprietaarsetele litsentsidele saavutas oma eesmĂ€rgi, kuna AWS ja Google asutasid forki, hakkasid osalema ĂŒhise arendamisega ja jagama oma varasemaid saavutusi. Samal ajal kahjustas litsentside vahetus suhtlemist kogukonnaga, mille taastamise nimel ĂŒritab ettevĂ”te nĂŒĂŒd tagasi pöörduda avatud litsentsi all koodi pakkumise juurde.
PĂ€rast ĂŒleminekut proprietaarsetele litsentsidele jĂ€tkati avatud koodibaasi arendust Valkey forkkis (fork, mida arendatakse Amazon, Google, Oracle, Ericsson ja Snap osalusel), Redict (fork, mille autor on Sway kasutajaliidese ja Hare keele looja), Garnet (Microsofti andmebaas, mis on ĂŒhilduv Redisiga) vĂ”i KeyDB (Snapchatist pĂ€rit kĂ”rge jĂ”udlusega Redis 5 fork). Debian 13, Ubuntu 24.10, Fedora 41, RHEL 10, Azure Linux 3, Arch Linux ja Alpine 3.20 jaotuses asendas Redis paketi fork Valkey.
Alguses anti Redis vĂ€lja BSD-litsentsi all, mis lubas muudatusi mitte avalikustada, seejĂ€rel liiguti omandiĂ”iguse litsentside, RSALv2 (Redis Source Available License v2) ja SSPLv1 (Server Side Public License v1) juurde. Alates Redis 8-st on projekti kood saadaval AGPLv3 litsentsi all, mille eripĂ€ra on piirangud rakendustele, mis toetavad vĂ”rgu teenuseid. Kui kasutada AGPL-komponente vĂ”rgu teenuste töös, on arendaja kohustatud kasutajale pakkuma kĂ”igi nende komponentide muudatuste allika, isegi kui teenuse alusena kasutatav tarkvara ei levita ja seda kasutatakse ainult sisemises infrastruktuuris teenuse toimimise korraldamiseks. AGPLv3 litsents on ĂŒhilduv GPLv3-ga, kuid see on vastuolus GPLv2 litsentsiga.
Varasemalt kasutatud SSPL- ja RSAL-litsentsid viisid teatud kasutajate rĂŒhmade diskrimineerimiseni, mistĂ”ttu ei saanud neid pidada avatud vĂ”i vabaks. Oma eesmĂ€rkidelt on mĂ”lemad litsentsid sarnased, erinevused seisnevad selles, et SSPL-litsents pĂ”hineb AGPLv3 kopileft-litsentsil, samas kui RSAL-litsents pĂ”hineb BSD-permissiivsel litsentsil. RSAL-litsents lubab koodi kasutada, muuta, levitada ja integreerida rakendustesse, vĂ€lja arvatud juhtudel, kui need rakendused on kaubanduslikud vĂ”i neid kasutatakse hallatavate tasuliste teenuste osutamiseks. SSPL-litsents sisaldab lisaks nĂ”uet, et pakkuda sama litsentsi all mitte ainult rakenduse koodi, vaid ka kĂ”igi komponentide algtekste, mis on seotud pilveteenuse osutamisega.
Samaaegselt litsentsimuudatuse kuulutamisega avaldati Redis 8.0 versioon. Siiski, vaatamata avalikustamisele, on repertuaaris praegu saadaval vaid versiooni kandidaat, ja link Redis 8.0 allalaadimisele projekti veebisaidil viib lehele, kus on ĂŒldine ĂŒlevaade installimise protsessist. VersioonimĂ€rkuses on praegu samuti mĂ€rgitud vaid 8.0-RC1 vĂ€ljalase.
Peamised muudatused Redis 8.0-s:
- Lisatud on andmestruktuuri tĂŒĂŒp vektorite kogumite salvestamiseks, mida kasutatakse masinĂ”ppe ja semantilise otsingu sĂŒsteemides. Vektorite kogumid (vector set) laiendavad varem saadaval olnud sorteeritud loendite (sorted set) funktsionaalsust, vĂ”imaldades salvestada mitmemÔÔtmelisi vektoreid. Vektoriandmete manipuleerimiseks on lisatud 11 uut kĂ€sku, nagu VADD, VREM ja VSIM.
- Redis peamisse koosseisu on viidud Redis Query Engine, JSON, Aja Seeria ja TĂ”enĂ€osuslikud AndmetĂŒĂŒbid, mis varem olid saadaval eraldi Redis Stack laiendustena.
- Integreeritud on JSON andmestruktuuri tugi, mis vĂ”imaldab salvestada JSON-formaadis dokumente vĂ”tmete seotuse kaudu Redis-is. JSON-dokumentide valikuline vĂ€ljavĂ”tmine ja ĂŒksikute elementide juurde pÀÀsemine vĂ”ib toimuda JSONPath pĂ€ringu keele abil. On olemas toetav aatomuuendamine, mis vĂ”imaldab muuta JSON-dokumendi ĂŒksikuid welli ilma kogu dokumenti laadimata.
- Lisatud on ajareani andmestruktuuride tugi (kus kirje koosneb ajast ja vastavatest vÀÀrtustest, nĂ€iteks sensori regulaarse oleku kĂŒsitlemise vĂ”i mÔÔtmete kogumise kaudu). MĂ€lutarbimise vĂ€hendamiseks on kasutusele vĂ”etud sarnaste andmete tihendamise algoritmid ja arhiiviandmete (downsampling) reeglite mÀÀramise vĂ”imalus.
- Lisatud on tĂ”enĂ€osuslikud andmestruktuurid: Bloom filter, Cuckoo filter, Count-min sketch, Top-k ja t-digest, mis vĂ”imaldavad oluliselt vĂ€hendada andmesalvestuse mÔÔtmeid vĂ€ga suurte andmemahtude salvestamise korral tĂ€psuse kaotamise arvelt mĂ”ningates operatsioonides. âBloom filterâ ja âCuckoo filterâ vĂ”imaldavad kontrollida elemendi kuulumist hulka, lubades valeotsuseid mitteolevas elemendis, kuid vĂ€listades olemasoleva elemendi vahelejĂ€tmise. âCount-min sketchâ prognoosib vÀÀrtuse mainimise arvu hulgas. âTop-kâ vĂ”imaldab leida kĂ”ige sagedamini esinevaid vÀÀrtusi. âT-digestâ vĂ”imaldab teha vÀÀrtuste valiku, mis on suurem vĂ”i vĂ€iksem kui mÀÀratud.
- Komplekti kuulub âRedis Query Engineâ mootori tugi, mis vĂ”imaldab vektoris otsingut ja vĂ”imaldab koostada valikuid sisu, mitte vĂ”tmete alusel. Redis Query Engine vĂ”imaldab luua tĂ€iendavaid indekseid andmete jaoks, mis on salvestatud hashides ja JSON-dokumentides.
- Taas on laienenud ACL (Access Control Lists) tugi, mis vĂ”imaldab hallata juurde pÀÀsu andmetele vĂ”tmete alusel ja mis vĂ”imaldab mÀÀrata erinevaid juurdepÀÀsu reeglite komplekte, mis on seotud iga kasutajaga. NĂ€iteks ACL abil saab mÀÀrata, millised kasutajad saavad Redis'ega ĂŒhendust luua, millistele vĂ”tmetele on kasutajal juurdepÀÀs ja milliseid kĂ€ske ta saab tĂ€ita. Redis 8-s on lisatud uued ACL kategooriad uutele andmestruktuuridele.
- Uued kÀsud hulkadega töötamiseks:
- HGETDEL â vĂ€lja anda ja kustutada hulga vĂ€ljad mÀÀratud vĂ”tme jĂ€rgi.
- HGETEX â vĂ€lja anda hulga vĂ€ljad mÀÀratud vĂ”tme jĂ€rgi ja mÀÀrata nende eluaeg.
- HSETEX â seada hulga vĂ€ljad mÀÀratud vĂ”tme jĂ€rgi ja mÀÀrata nende eluaeg.
- Tehtud on rohkem kui 30 jĂ”udluse optimeerimist, mis toob mĂ”nes testis kaasa kuni 87% kĂ€su tĂ€itmise kiirus, 112% suurema lĂ€bilaskevĂ”ime, 18% kiirema replikatsiooni ja Redis Query Engine'i tulemuste kiiruseni kuni 16 korda (horisontaalse ja vertikaalse skaleerimise kaudu). 149 testi lĂ€bimise kĂ€igus hakkas 90 kĂ€sku tĂ€ituma kiiremini. LĂ€bilaskevĂ”ime on oluliselt suurenenud, tĂ€nu komponentide ĂŒleminekule mitme lĂ”ime töötamisele kĂ€skude töötlemisel, kliendipĂ€ringute töötlemisel, vĂ”rgusokettide lugemisel ja kirjutamisel. Pakutud on uus mitme lĂ”ime sisendi/vĂ€ljundi töötlemise (io-threads) mehanismi teostus.
- Esitatud on uus replikatsioonimehhanism, mis tarbib 35% vĂ€hem mĂ€lu ja töötab 18% kiiremini. Lukustuste vĂ€ltimiseks on kasutusel kaks eraldi replikatsioonivoogu â ĂŒks muudatuste edastamiseks peamisele sĂ”lmule ja teine muudatuste edastamiseks vahepealsetele sĂ”lmedele.
Andmete haldamiseks Redis DB-s on saadaval sellised kĂ€sud nagu inkremendi/dekrement, standardtoimingud listide ja kogumite (liitmine, ristumine) ĂŒle, vĂ”tmete ĂŒmbernimetamine, mitmekordsed valikud ja sorteerimise funktsioonid. Toetatakse kahte salvestusreĆŸiimi: andmete perioodilist sĂŒnkroniseerimist kettale ja muudatuste logi sĂ€ilitamist kettal. Viimasel juhul tagatakse kĂ”igi muudatuste tĂ€ielik sĂ€ilimine. Toetatakse tehinguid, mis vĂ”imaldavad ĂŒhe sammuna teostada grupi kĂ€ske, tagades nende jĂ€rjepidevuse ja kooskĂ”la (teised pĂ€ringud ei saa sekkuda) mÀÀratud kĂ€skude komplekti tĂ€itmise ajal ning probleemide korral vĂ”imaldades muudatuste tagasi pööramist.
Andmete master-slave replikatsioon on vĂ”imalik mitmesse serverid, mis toimub mitteblokeerivas reĆŸiimis. Samuti on saadaval teade- ja tellimissĂŒsteem, kus luuakse kanal, mille kaudu levitatakse teateid tellijatele. KĂ”ik andmed cache-takse tĂ€ielikult mĂ€lus. Kliendi raamatukogud on saadaval enamikule populaarsetele keeledele, sealhulgas Perl, Python, PHP, Java, Ruby, Tcl, JavaScript/Node.js, Go ja C#.
Allikas: opennet.ru
