ĂshtĂ« publikuar versioni i DBMS Redis 7.0, qĂ« i pĂ«rket klasĂ«s sĂ« sistemeve NoSQL. Redis ofron funksione pĂ«r ruajtjen e tĂ« dhĂ«nave nĂ« formatin çelĂ«si/vlerĂ«, duke u zgjeruar me mbĂ«shtetje pĂ«r formate tĂ« strukturuara tĂ« tĂ« dhĂ«nave, si lista, hash-e dhe grupe, si dhe mundĂ«sinĂ« e ekzekutimit tĂ« skripteve-mbĂ«shtetĂ«se nĂ« server me gjuhĂ«n Lua. Kodi i projektit ofrohet nĂ«n licencĂ«n BSD. Modulet shtesĂ«, qĂ« ofrojnĂ« funksionalitete tĂ« zgjeruara pĂ«r pĂ«rdoruesit korporatĂ«, si RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, qĂ« nga viti 2019 ofrohen nĂ«n licencĂ«n e pronarit RSAL. Zhvillimi i varianteve tĂ« hapura tĂ« kĂ«tyre moduleve nĂ«n licencĂ«n AGPLv3 pĂ«rpiqet tĂ« vazhdojĂ« projekti GoodFORM, i cili pĂ«r momentin ndodhet nĂ« stagnim.
Ndryshe nga sistemet e ruajtjes në memorie, të tilla si Memcached, Redis siguron ruajtjen e përhershme të të dhënave në disk dhe garanton sigurinë e DB-së në rast të mbylljes së papritur. Kodet burimore të projektit shpërndahen në kuadër të licencës BSD. Bibliotekat klientore janë të disponueshme për shumicën e gjuhëve të njohura, përfshirë Perl, Python, PHP, Java, Ruby dhe Tcl. Redis mbështet transaksionet, që lejojnë ekzekutimin e një grupi komandash në një hap, duke garantuar qëndrueshmërinë dhe koherencën (komandat nga kërkesa të tjera nuk mund të ndërhyjnë) e ekzekutimit të këtij grumbulli komandash, dhe në rast problemesh lejojnë rikthimin e ndryshimeve. Të gjitha të dhënat ruhen plotësisht në memorie.
PĂ«r menaxhimin e tĂ« dhĂ«nave, ofrohen komanda tĂ« tilla si inkrement/defrement, operacione standard mbi lista dhe grupe (bashkimi, pĂ«rbashkimi), rinaming i çelĂ«save, marrje tĂ« shumta dhe funksione renditjeje. MbĂ«shteten dy mĂ«nyra ruajtjeje: sinkronizimi i rregullt i tĂ« dhĂ«nave nĂ« disk dhe mbajtja nĂ« disk e logut tĂ« ndryshimeve. NĂ« rastin e dytĂ«, garantohet ruajtja e plotĂ« e tĂ« gjitha ndryshimeve. ĂshtĂ« e mundur organizimi i replikimit tĂ« tĂ« dhĂ«nave master-slave nĂ« disa serverĂ«sh, realizuar nĂ« mĂ«nyrĂ« jo bllokuese. ĂshtĂ« gjithashtu nĂ« dispozicion njĂ« regjimi i komunikimit "publikim/abone", ku krijohet njĂ« kanal, mesazhet nga i cili shpĂ«rndahen klientĂ«ve nĂ« bazĂ« tĂ« abonimeve.
Ndryshimet kryesore në Redis 7.0:
- Shtuar mbështetje për funksione që kryhen anash serverë. Ndryshe nga skriptet e mbështetur më parë në gjuhën Lua, funksionet nuk janë të lidhura me aplikacionin dhe synojnë realizimin e logjikës shtesë, që zgjeron mundësitë e serverit. Funksionet trajtohen në përputhje të ngushtë me të dhënat dhe në lidhje me bazën e të dhënave, e jo me aplikacionin, duke përfshirë replikimet dhe ruajtjen në magazinën e qëndrueshme.
- ĂshtĂ« propozuar njĂ« redaktim i dytĂ« i ACL, qĂ« lejon menaxhimin e aksesit nĂ« tĂ« dhĂ«na sipas çelĂ«save dhe lejon pĂ«rcaktimin e grupeve tĂ« ndryshme tĂ« rregullave tĂ« aksesit nĂ« komandat me mundĂ«sinĂ« e lidhjes sĂ« disa selektorĂ«ve (grupeve tĂ« kompetencave) pĂ«r çdo pĂ«rdorues. Ădo çelĂ«s mund tĂ« identifikohet me kompetenca tĂ« caktuara, pĂ«r shembull, mund tĂ« kufizohet aksesin nĂ« mĂ«nyrĂ« vetĂ«m pĂ«r lexim ose shkruan nĂ« njĂ« nĂ«ngrup tĂ« caktuar çelĂ«sash.
- ĂshtĂ« ofruar njĂ« realizim funksional nĂ« klaster tĂ« modelit tĂ« shpĂ«rndarjes sĂ« mesazheve sipas abonimit (Publish-Subscribe), ku mesazhi dĂ«rgohet nĂ« njĂ« nyjĂ« tĂ« caktuar, e cila ka njĂ« kanal mesazhesh tĂ« lidhur, pas sĂ« cilĂ«s ky mesazh ridĂ«rgohet nĂ« nyjet e tjera qĂ« bĂ«jnĂ« pjesĂ« nĂ« seksionin (shard). KlientĂ«t mund tĂ« marrin mesazhe duke u abonuar nĂ« kanalin, si duke u lidhur me nyjĂ«n kryesore ashtu edhe me nyjat sekondare tĂ« seksionit. Menaxhimi kryhet me ndihmĂ«n e komandave SSUBSCRIBE, SUNSUBSCRIBE dhe SPUBLISH.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r trajtimin e nĂ«ndĂ«rdheve nĂ« shumicĂ«n e konteksteve.
- Komandat e reja janë shtuar:
- ZMPOP, BZMPOP.
- LMPOP, BLMPOP.
- SINTERCARD, ZINTERCARD.
- SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
- EXPIRETIME, PEXPIRETIME.
- EVAL_RO, EVALSHA_RO, SORT_RO.
- FUNCTION *, FCALL, FCALL_RO.
- COMMAND DOCS, COMMAND LIST.
- LATENCY HISTOGRAM.
- CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
- CLIENT NO-EVICT.
- ACL DRYRUN.
- ĂshtĂ« ofruar mundĂ«sia e trajtimit tĂ« menjĂ«hershĂ«m tĂ« disa konfigurimeve nĂ« njĂ« kĂ«rkesĂ« CONFIG SET/GET.
- JanĂ« shtuar opsionet «âjson», «-2», «âscan», «âfunctions-rdb» nĂ« utilitarin redis-cli.
- Për përfundim, klientëve u është ndaluar qasja në cilësimet dhe komandat që ndikojnë në siguri (për shembull, komandat DEBUG dhe MODULE janë çaktivizuar, ndalohet ndryshimi i konfigurimeve me flagun PROTECTED_CONFIG). Në redis-cli, është ndaluar shkarkimi në skedarin me historinë e komandave që përmbajnë të dhëna të ndjeshme.
- Shtuar njĂ« sasi tĂ« madhe optimizimesh, tĂ« orientuara drejt pĂ«rmirĂ«simit tĂ« efikasitetit dhe reduktimit tĂ« konsumit tĂ« memories. PĂ«r shembull, Ă«shtĂ« ulur ndjeshĂ«m konsumimi i memories kur aktivizohet moda e klasterit, gjatĂ« kryerjes sĂ« operacioneve copy-on-write dhe gjatĂ« punĂ«s me hash dhe çelĂ«sa zset. ĂshtĂ« pĂ«rmirĂ«suar logjika e rikthimit tĂ« tĂ« dhĂ«nave nĂ« disk (thirrjes fsync). Numri i paketave rrjet dhe thirrjeve tĂ« sistemit Ă«shtĂ« reduktuar gjatĂ« dĂ«rgimit tĂ« pĂ«rgjigjeve pĂ«r klientĂ«t. Efikasiteti i replikimit Ă«shtĂ« rritur.
- Eliminuar një vulnerabilitet CVE-2022-24735 në mjedisin e ekzekutimit të skripteve Lua, i cili lejon zëvendësimin e kodit tuaj Lua dhe arritjen e ekzekutimit të tij në kontekstin e një përdoruesi tjetër, përfshirë ata me privilegje më të larta.
- Eliminuar një vulnerabilitet CVE-2022-24736, i cili lejon që të shkaktohet mbyllje e papritur e procesit redis-server për shkak të dereferencës së një treguesi null. Sulmi kryhet përmes ngarkimit të skripteve Lua të strukturuara posaçërisht.
Burimi: opennet.ru
