Kompania Redis Ltd njoftoi ndryshimin e politikĂ«s sĂ« licencimit tĂ« projektit. Duke filluar nga versioni Redis 8.0, kodi i projektit Ă«shtĂ« bĂ«rĂ« i disponueshĂ«m nĂ«n licencĂ«n e lirĂ« AGPLv3. Kalimi te njĂ« licencĂ« e hapur u bĂ« i mundur falĂ« rikthimit nĂ« kompani tĂ« Salvatore Sanfilippo, krijuesit tĂ« DBMS Redis. Pas largimit tĂ« tij nga Redis Ltd, Salvatore zhvilloi njĂ« grup zgjerimesh vektoriale (Vector Sets), tĂ« cilat ishte i gatshĂ«m tâi pĂ«rfshinte nĂ« Redis, por dĂ«shironte qĂ« kodi i krijuar prej tij tĂ« shpĂ«rndahej me njĂ« licencĂ« tĂ« hapur. Salvatore arriti tâi bindĂ« kolegĂ«t pĂ«r dobinĂ« e rikthimit tĂ« karakterit tĂ« hapur tĂ« projektit dhe pĂ«rmirĂ«simit tĂ« bashkĂ«punimit me komunitetin.
Rowan Trollope, drejtor i Redis Ltd, deklaroi se kalimi te licencat pronĂ«sore i kryer vitin e kaluar e arriti qĂ«llimin e vet, pasi AWS dhe Google krijuan njĂ« fork, nisĂ«n tĂ« marrin pjesĂ« nĂ« zhvillimin e pĂ«rbashkĂ«t dhe tĂ« ndajnĂ« punĂ«t e tyre tĂ« mĂ«parshme. MegjithatĂ«, ndryshimi i licencave dĂ«mtoi marrĂ«dhĂ«niet me komunitetin, tĂ« cilat kompania tani do tĂ« pĂ«rpiqet tâi rikthejĂ« duke iu kthyer shpĂ«rndarjes sĂ« kodit nĂ«n njĂ« licencĂ« tĂ« lirĂ«.
Pas kalimit te licencat pronësore, zhvillimi i bazës së hapur të kodit të Redis vazhdoi në fork-et Valkey (një fork i zhvilluar me pjesëmarrjen e Amazon, Google, Oracle, Ericsson dhe Snap), Redict (një fork nga autori i shell-it të përdoruesit Sway dhe gjuhës Hare), Garnet (një DBMS nga Microsoft, i përputhshëm me Redis) dhe KeyDB (një fork me performancë të lartë i Redis 5 nga Snapchat). Në depozitat e shpërndarjeve Debian 13, Ubuntu 24.10, Fedora 41, RHEL 10, Azure Linux 3, Arch Linux dhe Alpine 3.20, paketa Redis është zëvendësuar me fork-un Valkey.
Fillimisht, Redis shpĂ«rndahej me licencĂ«n permissive BSD, e cila lejonte qĂ« ndryshimet e bĂ«ra tĂ« mos publikoheshin, ndĂ«rsa mĂ« pas kaloi te licencat pronĂ«sore RSALv2 (Redis Source Available License v2) dhe SSPLv1 (Server Side Public License v1). Duke filluar nga Redis 8, kodi i projektit Ă«shtĂ« i disponueshĂ«m me licencĂ«n AGPLv3, veçoria kryesore e sĂ« cilĂ«s janĂ« kufizimet pĂ«r aplikacionet qĂ« sigurojnĂ« funksionimin e shĂ«rbimeve tĂ« rrjetit. Kur komponentĂ«t AGPL pĂ«rdoren nĂ« funksionimin e shĂ«rbimeve tĂ« rrjetit, zhvilluesi Ă«shtĂ« i detyruar tâi vĂ«rĂ« nĂ« dispozicion pĂ«rdoruesit kodin burimor tĂ« tĂ« gjitha ndryshimeve tĂ« bĂ«ra nĂ« kĂ«ta komponentĂ«, edhe nĂ«se softueri mbi tĂ« cilin mbĂ«shtetet shĂ«rbimi nuk shpĂ«rndahet dhe pĂ«rdoret vetĂ«m brenda infrastrukturĂ«s sĂ« brendshme pĂ«r organizimin e punĂ«s sĂ« shĂ«rbimit. Licenca AGPLv3 Ă«shtĂ« e pĂ«rputhshme me GPLv3, por bie nĂ« konflikt me licencĂ«n GPLv2.
Licencat SSPL dhe RSAL të përdorura më parë çonin në diskriminimin e disa kategorive të përdoruesve, gjë që nuk lejonte që ato të konsideroheshin si të hapura ose të lira. Për nga qëllimi, të dyja licencat janë të ngjashme me njëra-tjetrën, ndërsa ndryshimi kryesor qëndron në faktin se licenca SSPL bazohet në licencën copyleft AGPLv3, ndërsa licenca RSAL bazohet në licencën permissive BSD. Licenca RSAL lejon përdorimin, ndryshimin, shpërndarjen dhe integrimin e kodit në aplikacione, me përjashtim të 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 që, me të njëjtën licencë, të shpërndahet jo vetëm kodi i vetë aplikacionit, por edhe kodi burimor i të gjithë komponentëve të përfshirë në ofrimin e një shërbimi cloud.
Njëkohësisht me njoftimin për ndryshimin e licencës, u prezantua edhe publikimi i Redis 8.0. Megjithatë, pavarësisht njoftimit për disponueshmërinë e versionit, në depo aktualisht është vendosur vetëm kandidati për publikim, ndërsa lidhja për shkarkimin e Redis 8.0 në faqen e projektit të çon te një faqe me përshkrimin e përgjithshëm të procesit të instalimit. Edhe në shënimin e publikimit, për momentin përmendet vetëm dalja e versionit 8.0-RC1.
Ndryshimet kryesore në Redis 8.0:
- ĂshtĂ« shtuar njĂ« tip pĂ«r ruajtjen e grupeve tĂ« tĂ« dhĂ«nave vektoriale, i kĂ«rkuar nĂ« sistemet e machine learning dhe kĂ«rkimit semantik. Grupet vektoriale (vector set) zgjerojnĂ« funksionalitetin e mĂ«parshĂ«m tĂ« sorted set me mundĂ«sinĂ« e ruajtjes sĂ« vektorĂ«ve shumĂ«dimensionalĂ«. PĂ«r manipulimin e tĂ« dhĂ«nave vektoriale janĂ« shtuar 11 komanda tĂ« reja, si VADD, VREM dhe VSIM.
- Në përbërjen bazë të Redis janë integruar modulet Redis Query Engine, JSON, Time Series dhe Probabilistic Data Types, të cilat më parë ofroheshin si zgjerime të veçanta të Redis Stack.
- ĂshtĂ« 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 qasjen te elementĂ«t e veçantĂ« mund tĂ« pĂ«rdoret gjuha e pyetjeve JSONPath. Ekziston edhe mbĂ«shtetje pĂ«r pĂ«rditĂ«sim atomik, qĂ« lejon ndryshimin e fushave tĂ« veçanta tĂ« njĂ« dokumenti JSON pa ngarkuar tĂ« gjithĂ« dokumentin.
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r struktura tĂ« tĂ« dhĂ«nave nĂ« formĂ«n e serive kohore (ku njĂ« regjistrim pĂ«rbĂ«het nga koha dhe njĂ« grup vlerash pĂ«rkatĂ«se pĂ«r atĂ« moment, pĂ«r shembull, tĂ« marra nga kontrolli periodik i gjendjes sĂ« sensorĂ«ve ose mbledhja e metrikave). PĂ«r tĂ« ulur konsumin e memories pĂ«rdoren algoritme kompresimi pĂ«r tĂ« dhĂ«na tĂ« tilla dhe ofrohet mundĂ«sia pĂ«r tĂ« pĂ«rcaktuar rregulla pĂ«r downsampling tĂ« tĂ« dhĂ«nave arkivore.
- Janë shtuar struktura probabilistike të të dhënave: Bloom filter, Cuckoo filter, Count-min sketch, Top-k dhe t-digest, të cilat mundësojnë ulje të ndjeshme të madhësisë së ruajtjes kur duhet të mbahen vëllime shumë të mëdha të dhënash, duke pranuar humbje të saktësisë në disa operacione. Bloom filter dhe Cuckoo filter lejojnë verifikimin e përkatësisë në një bashkësi, duke toleruar identifikimin e gabuar të një elementi që mungon, por pa lejuar anashkalimin e një elementi ekzistues. Count-min sketch parashikon numrin e përmendjeve të një vlere në një bashkësi. Top-k mundëson gjetjen e vlerave që shfaqen më shpesh. T-digest jep mundësinë për të kryer përzgjedhje të vlerave që janë më të mëdha ose më të vogla se një prag i caktuar.
- Në përbërje është përfshirë motori Redis Query Engine me mbështetje për kërkim vektorial dhe me mundësi për krijimin e përzgjedhjeve sipas përmbajtjes, jo sipas çelësave. Redis Query Engine lejon krijimin e indekseve shtesë për të dhënat e vendosura në hash-e dhe dokumente JSON.
- ĂshtĂ« zgjeruar mbĂ«shtetja pĂ«r ACL (Access Control Lists), qĂ« mundĂ«son menaxhimin e qasjes nĂ« tĂ« dhĂ«na nĂ« bazĂ« tĂ« çelĂ«save dhe lejon pĂ«rcaktimin e grupeve tĂ« ndryshme tĂ« rregullave tĂ« qasjes pĂ«r komandat, me mundĂ«sinĂ« e lidhjes sĂ« grupeve tĂ« lejeve me secilin pĂ«rdorues. PĂ«r shembull, me ndihmĂ«n e ACL mund tĂ« pĂ«rcaktohet se cilĂ«t pĂ«rdorues mund tĂ« lidhen me Redis, te cilĂ«t çelĂ«sa ka qasje njĂ« pĂ«rdorues dhe cilat komanda mund tĂ« ekzekutojĂ«. NĂ« Redis 8 janĂ« shtuar kategori tĂ« reja ACL pĂ«r strukturat e reja tĂ« tĂ« dhĂ«nave.
- Janë shtuar komanda të reja për punë me hash-et:
- HGETDEL â merr dhe fshin fushat e hash-it pĂ«r çelĂ«sin e specifikuar.
- HGETEX â merr fushat e hash-it pĂ«r çelĂ«sin e specifikuar dhe cakton kohĂ«n e vlefshmĂ«risĂ« pĂ«r to.
- HSETEX â vendos fushat e hash-it pĂ«r çelĂ«sin e specifikuar dhe cakton kohĂ«n e vlefshmĂ«risĂ« pĂ«r to.
- JanĂ« bĂ«rĂ« mĂ« shumĂ« se 30 optimizime tĂ« performancĂ«s, tĂ« cilat nĂ« disa teste kanĂ« sjellĂ« pĂ«rshpejtim tĂ« ekzekutimit tĂ« komandave deri nĂ« 87%, rritje tĂ« kapacitetit pĂ«rpunues me 112%, pĂ«rshpejtim tĂ« replikimit me 18% dhe pĂ«rshpejtim tĂ« kĂ«rkimit nĂ« Redis Query Engine deri nĂ« 16 herĂ« (falĂ« shkallĂ«zimit horizontal dhe vertikal). GjatĂ« kalimit tĂ« njĂ« pakete prej 149 testesh, 90 komanda nisĂ«n tĂ« ekzekutohen mĂ« shpejt. Kapaciteti pĂ«rpunues u rrit ndjeshĂ«m falĂ« kalimit nĂ« punĂ« shumĂ«fijĂ«she tĂ« komponentĂ«ve pĂ«r analizimin e komandave, pĂ«rpunimin e kĂ«rkesave tĂ« klientĂ«ve, leximin dhe shkrimin nĂ« socket-et e rrjetit. ĂshtĂ« propozuar njĂ« implementim i ri i mekanizmit tĂ« pĂ«rpunimit shumĂ«fijĂ«sh tĂ« hyrje/daljeve (io-threads).
- ĂshtĂ« prezantuar njĂ« mekanizĂ«m i ri replikimi, qĂ« konsumon 35% mĂ« pak memorie dhe punon 18% mĂ« shpejt. PĂ«r tĂ« shmangur bllokimet pĂ«rdoren dy fije tĂ« veçanta replikimi â njĂ«ra pĂ«r transmetimin e ndryshimeve te nyja kryesore, dhe tjetra pĂ«r transmetimin e ndryshimeve te nyjet ndĂ«rmjetĂ«se.
Për menaxhimin e të dhënave në DBMS Redis ofrohen komanda si increment/decrement, operacione standarde me lista dhe bashkësi (union, intersection), riemërtimi i çelësave, përzgjedhje 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ë garantohet ruajtja e plotë e të gjitha ndryshimeve. Mbështeten edhe transaksionet, të cilat lejojnë ekzekutimin në një hap të një grupi komandash, duke garantuar integritetin dhe rendin e ekzekutimit të grupit të përcaktuar të komandave (komandat nga kërkesa të tjera nuk mund të ndërhyjnë), si edhe mundësojnë kthimin pas të ndryshimeve në rast problemesh.
ĂshtĂ« e mundur tĂ« organizohet replikimi master-slave i tĂ« dhĂ«nave nĂ« disa serverĂ«sh, i cili realizohet nĂ« modalitet jo-bllokues. ĂshtĂ« i disponueshĂ«m gjithashtu edhe modaliteti i shkĂ«mbimit tĂ« mesazheve «publikim/pajtim», ku krijohet njĂ« kanal dhe mesazhet prej tij shpĂ«rndahen te klientĂ«t e abonuar. TĂ« gjitha tĂ« dhĂ«nat ruhen plotĂ«sisht nĂ« cache nĂ« memorien operative. Bibliotekat e klientit janĂ« tĂ« disponueshme pĂ«r shumicĂ«n e gjuhĂ«ve tĂ« njohura, pĂ«rfshirĂ« Perl, Python, PHP, Java, Ruby, Tcl, JavaScript/Node.js, Go dhe C#.
Burimi: opennet.ru
