Kompania Redis Ltd shpalli ndryshimin e politikës së licencave të projektit. Duke filluar me lëshimin e Redis 8.0, kodi i projektit u bë i disponueshëm nën licencën e lirë AGPLv3. Kalimi në licencën e hapur u bë i mundur falë rikthimit në kompani të Salvatore Sanfilippo, krijuesit të DB-së Redis. Pas largimit nga Redis Ltd, Salvatore zhvilloi një përsetit vektorësh (Vector Sets), të cilin dëshiroi ta integrojë në Redis, por donte që kodi i krijuar prej tij të ofrohej nën një licencë të hapur. Salvatore arriti të bindë kolegët për nevojën e rikthimit të natyrës së hapur të projektit dhe përmirësimit të ndërveprimit me komunitetin.
Rowan Trollope, drejtori i Redis Ltd, tha se kalimi në licenca pronësore vitin e kaluar arriti qëllimin e tij, pasi kompanitë AWS dhe Google themeluan një fork, filluan të merrnin pjesë në zhvillimin e përbashkët dhe të ndanin përvojat e tyre të kaluara. Ndërkohë, ndryshimi i licencave dëmtoi marrëdhëniet me komunitetin, të cilat tani kompania do të përpiqet ti rikthejë duke u kthyer në ofrimin e kodit nën licencën e lirë.
Pas kalimit në licenca pronësore, zhvillimi i bazës së kodit të hapur të Redis vazhdoi në forkat Valkey (fork i zhvilluar me pjesëmarrjen e Amazon, Google, Oracle, Ericsson dhe Snap), Redict (fork nga autori i ndërfaqes përdoruese Sway dhe gjuhës Hare), Garnet (DB e Microsoft-it e cila është e përputhshme me Redis) dhe KeyDB (fork me performancë të lartë i Redis 5 nga Snapchat). Në repozitorët e distribucioneve Debian 13, Ubuntu 24.10, Fedora 41, RHEL 10, Azure Linux 3, Arch Linux dhe Alpine 3.20, paketa Redis u zëvendësua me fork Valkey.
Fillimisht Redis u ofrua nën një licencë të lehtësuar BSD, e cila lejonte të mos raportoheshin ndryshimet, pas së cilës kaloi në licenca pronësore RSALv2 (Licenca e Disponueshme e Burimeve të Redis v2) dhe SSPLv1 (Licenca Publike Anësore e Serverëve v1). Duke filluar nga Redis 8, kodi i projektit është i disponueshëm nën licencën AGPLv3, e cila ka kufizime për aplikacionet që ofrojnë funksionimin e shërbimeve në rrjet. Përdoruesit e komponentëve AGPL në shërbime në rrjet janë të detyruar të ofrojnë përdoruesve kodin burimor të të gjitha ndryshimeve të bëra në këto komponente, edhe nëse softueri në bazë të shërbimit nuk shpërndahet dhe përdoret vetëm në infrastrukturën e brendshme për organizimin e punës së shërbimit. Licenca AGPLv3 është e përputhshme me GPLv3, por është në konflikt me licencën GPLv2.
Licencat SSPL dhe RSAL që ishin përdorur deri tani çuan në diskriminimin e kategorive të veçanta të përdoruesve, çka nuk lejonte që ato të konsideroheshin të hapura ose të lira. Ndër qëllimet e tyre, të dyja licencat janë të ngjashme me njëra-tjetrën, ndërsa dallimet përfshijnë se licenca SSPL është e bazuar në licencën e copëzimit AGPLv3, ndërsa licenca RSAL është e bazuar në licencën e lehtësuar BSD. Licenca RSAL lejon përdorimin, modifikimin, shpërndarjen dhe integrimin e kodit në aplikacione, përveç rasteve kur këto aplikacione janë komerciale ose përdoren për ofrimin e shërbimeve të menaxhuara me pagesë. Licenca SSPL përfshin gjithashtu kërkesën për ofrimin nën të njëjtën licencë jo vetëm për kodin e aplikacionit, por edhe për tekstet burimore të të gjithë komponenteve të përfshirë në ofrimin e shërbimit në re.
Në të njëjtën kohë me shpalljen e ndryshimit të licencës u prezantua versioni Redis 8.0. Megjithatë, përkundër shpalljes së disponueshmërisë së versionit, në repozitorinë e projektit momentalisht është vetëm kandidati për versionet, dhe lidhja për shkarkimin e Redis 8.0 në faqen e projektit çon në një faqe me përshkrimin e përgjithshëm të procesit të instalimit. Në shënimin për version, gjithashtu është përmendur vetëm lëshimi 8.0-RC1.
Ndryshimet kryesore në Redis 8.0:
- Shtuar një tip për ruajtjen e grupeve të të dhënave vektoriale, të kërkuara në sistemet e mësimit të makinerisë dhe kërkimit semantik. Griset vektoriale (vector set) zgjasin funksionalitetin e mëparshëm të listave të renditura (sorted set) me mundësinë e ruajtjes së vektorëve shumë-dimësionalë. Për manipulimin e të dhënave vektoriale janë shtuar 11 komanda të reja, si VADD, VREM dhe VSIM.
- Modulet Redis Query Engine, JSON, Time Series dhe Llojet e të Dhënave Probabilistike janë integruar në përbërjen kryesore të Redis, që më parë ishin ofruar si zgjerime të veçanta të Redis Stack.
- E integruar mbështetja për strukturën e të dhënave JSON, e cila lejon ruajtjen e dokumenteve në formatin JSON të lidhura me çelësat në Redis. Për nxjerrjen selektive të dokumenteve JSON dhe aksesin në elemente të veçanta mund të përdoret gjuha e pyetjeve JSONPath. Ekziston mbështetje për përditësimin atomik, që lejon të bëhen ndryshime në fushat e veçanta të dokumentit JSON pa e ngarkuar të gjithë dokumentin.
- Shtuar mbështetje për strukturat e dhënave në formën e serive kohore (një regjistër formon kohën dhe një grup vlerash përkatëse të këtij koha, për shembull, të marra përmes sondazhit të rregullt të gjendjeve të sensorëve ose mbledhjes së metrikave). Për të zvogëluar konsumimin e memories janë përdorur algoritme për kompresimin e këtyre të dhënave dhe është ofruar mundësia për të përcaktuar rregulla për filtrimin e të dhënave arkivore (downsampling).
- Shtuar struktura të dhënash probabilistike: Bloom filter, Cuckoo filter, Count-min sketch, Top-k dhe t-digest, që lejojnë një reduktim të konsiderueshëm të madhësisë së ruajtjes kur është e nevojshme ruajtja e volumit të madh të të dhënave në këmbim të humbjes së saktësisë gjatë ekzekutimit të disa operacioneve. "Bloom filter" dhe "Cuckoo filter" lejojnë verifikimin e anëtarësisë në një shumësi, duke pranuar përcaktimin e gabuar për elementet që mungojnë, por duke përjashtuar humbjen e elementeve ekzistues. "Count-min sketch" parashikon numrin e përmendjeve të një vlerë në shumësi. "Top-k" lejon gjetjen e vlerave më të zakonshme. "T-digest" ofron mundësinë për të nxjerrë vlera që janë më të mëdha ose më të vogla se një vlerë e caktuar.
- Përfshirë motorin "Redis Query Engine" me mbështetje për kërkimin vektorial dhe mundësitë për të formuar mostra në bazë të përmbajtjes, dhe jo në bazë të çelësave. Redis Query Engine lejon krijimin e indekseve shtesë për të dhënat e ruajtura në hesh të dhënash dhe dokumente JSON.
- Shtuar mbështetje më e gjerë për ACL (Listat e Kontrollit të Qasjes), që lejojnë menaxhimin e aksesit në të dhëna të bazuara në çelësa dhe lejojnë përcaktimin e grupeve të ndryshme të rregullave të qasjes për komandat me mundësinë e lidhjes së grupeve të autorizimeve me çdo përdorues. Për shembull, me anë të ACL është e mundur të përcaktohen përdoruesit që mund të lidhen me Redis, cilat çelësa ka akses përdoruesi dhe cilat komanda mund të ekzekutojë. Në Redis 8 janë shtuar kategori të reja të ACL për strukturat e reja të të dhënave.
- Shtuar komandat e reja për punën me heshin:
- HGETDEL â nxjerr dhe fshin fushat e heshit sipas çelĂ«sit tĂ« caktuar.
- HGETEX â nxjerr fushat e heshit sipas çelĂ«sit tĂ« caktuar dhe pĂ«rcakton njĂ« kohĂ« tĂ« jetĂ«s pĂ«r to.
- HSETEX â vendos fushat e heshit sipas çelĂ«sit tĂ« caktuar dhe pĂ«rcakton njĂ« kohĂ« tĂ« jetĂ«s pĂ«r to.
- Kryer më shumë se 30 optimizime në performancë, që në disa teste çon në rritjen e shpejtësisë ekzekutimit të komandave deri në 87%, rritjen e kapacitetit deri në 112%, përshpejtimin e replikimit deri në 18% dhe përshpejtimin e shpërndarjes në Redis Query Engine deri në 16 herë (përmes përmirësimit horizontal dhe vertical). Gjatë kalimit të një grupi prej 149 testeve, 90 komanda e kanë reduktuar kohën e ekzekutimit. Kapaciteti me të vërtetë është rritur duke kaluar komponentët në punën shumëfishe për analizimin e komandave, trajtimin e kërkesave të klientëve, leximin dhe shkrimin në soket rrjeti. Propozuar një implementim të ri të mekanizmit të procesimit shumëfisht të hyrjes/ daljes (io-threads).
- Paraqitur njĂ« mekanizĂ«m tĂ« ri tĂ« replikimit, qĂ« konsumon 35% mĂ« pak memorie dhe punon 18% mĂ« shpejt. PĂ«r tĂ« eliminuar bllokimet janĂ« angazhuar dy rrjedha tĂ« veçanta tĂ« replikimit â njĂ«ra pĂ«r transmetimin e ndryshimeve nĂ« nyjĂ«n kryesore, dhe tjetra pĂ«r transmetimin e ndryshimeve nĂ« nyjat ndĂ«rmjetĂ«se.
Për menaxhimin e të dhënave në DBMS Redis, ofrohen komanda si inkrementim/dekrementim, operacione standard mbi lista dhe shumësi (bashkimin, ndërprerja), rinomimi i çelësave, mostra të shumëfishta dhe funksione renditjeje. Mbështeten dy mënyra ruajtjeje: sinkronizimi periodik i të dhënave në disk dhe mbajtja në disk e regjistrit të ndryshimeve. Në rastin e dytë, garanton ruajtjen e plotë të të gjitha ndryshimeve. Mbështeten transaksionet, që lejojnë ekzekutimin e një grupi komandash në një hap, duke garantuar koherencën dhe vazhdimësinë (komandat nga kërkesa të tjera nuk mund të ndërhyjnë) e ekzekutimit të grupit të komandave të përcaktuara, dhe në rast problemesh duket se është e mundur të kthehen ndryshimet.
E mundur organizimi i replikimit master-slave të të dhënave në disa serverëve, duke u realizuar në një mënyrë jo bllokuese. Po ashtu, i nevojshëm është që një mekanizëm i komunikimit "publikim/abonim", ku krijohet një kanal, mesazhet nga i cili shpërndahen klientëve sipas abonimeve. Të gjitha të dhënat ruhen plotësisht në memorie. Bibliotekat e klientëve janë të disponueshme për shumicën e gjuhëve të njohura, duke përfshirë Perl, Python, PHP, Java, Ruby, Tcl, JavaScript/Node.js, Go dhe C#.
Burimi: opennet.ru
