Lëshimi i SGBD Redis 7.0, i përshtatur për sistemet NoSQL. Redis ofron funksione për ruajtjen e të dhënave në formatin çelës/vlerë, duke zgjeruar mbështetje për formate të dhënash të strukturuara, si lista, hash-e dhe grupe, si dhe mundësinë e ekzekutimit të skripte të përpunimit në anën e serverit në gjuhën Lua. Kodi i projektit ofrohet nën licencën BSD. Modulet shtesë që ofrojnë mundësi të zgjeruara për përdoruesit e korporatave, si RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, që nga viti 2019 ofrohen nën licencën pronësore RSAL. Përpjekja për zhvillimin e varianteve të hapura të këtyre moduleve nën licencën AGPLv3 u përpoq të vazhdojë projekti GoodFORM, i cili kohët e fundit është në stagnim.
Ndryshe nga sistemet e ruajtjes në memorie, si Memcached, Redis ofron ruajtje të përhershme të të dhënave në disk dhe garanton ruajtjen e bazës së të dhënave në rast të mbylljes emergjente. Kodet burimore të projektit shpërndahen nën licencën BSD. Bibliotekat për klientët janë të disponueshme për shumicën e gjuhëve më të njohura, duke përfshirë Perl, Python, PHP, Java, Ruby dhe Tcl. Redis mbështet transaksione, të cilat lejojnë ekzekutimin e një grupi komandash në një hap, duke garantuar konsistencën dhe renditjen (komandat nga kërkesa të tjera nuk mund të ndërhyjnë) në ekzekutimin e një seti të caktuar komandash, dhe në rast problemeve, duke lejuar rikthimin e ndryshimeve. Të gjithë të dhënat ruhen plotësisht në memorie.
PĂ«r menaxhimin e tĂ« dhĂ«nave ofrohen komandat si inkrement/dekrement, operacione standarde mbi lista dhe grupe (bashkimi, ndĂ«rprerja), rinovimi i çelĂ«save, seleksione tĂ« shumta dhe funksione renditjeje. MbĂ«shteten dy modo ruajtjeje: sinkronizimi periodic i tĂ« dhĂ«nave nĂ« disk dhe mbajtja e njĂ« logu tĂ« ndryshimeve nĂ« disk. NĂ« rastin e dytĂ« garanton ruajtjen e plotĂ« tĂ« tĂ« gjitha ndryshimeve. ĂshtĂ« e mundur organizimi i replikimit master-slave tĂ« tĂ« dhĂ«nave nĂ« disa servera, i realizuar nĂ« njĂ« mĂ«nyrĂ« jo bllokuese. Gjithashtu Ă«shtĂ« nĂ« dispozicion modaliteti i shkĂ«mbimit tĂ« mesazheve "publikim/abonim", ku krijohet njĂ« kanal, mesazhet prej tĂ« cilit shpĂ«rndahen te klientĂ«t sipas abonimit.
Ndryshimet kryesore në Redis 7.0:
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r funksione qĂ« ekzekutohen nĂ« anĂ«n server. Ndryshe nga skenaret e mbĂ«shtetur mĂ« parĂ« nĂ« gjuhĂ«n Lua, funksionet nuk lidhen me aplikacionin dhe janĂ« tĂ« pĂ«rqendruara nĂ« realizimin e logjikĂ«s shtesĂ«, duke zgjeruar mundĂ«sitĂ« e serverit. Funksionet pĂ«rpunohen njĂ«kohĂ«sisht me tĂ« dhĂ«nat dhe nĂ« lidhje me DB-nĂ«, jo me aplikacionin, pĂ«rfshirĂ« replikimin e tyre dhe ruajtjen nĂ« ruajtjen e pĂ«rhershme.
- Edyra e dytĂ« e ACL Ă«shtĂ« ofruar, duke lejuar menaxhimin e qasjes nĂ« tĂ« dhĂ«na nĂ« baza çelesh dhe duke mundĂ«suar pĂ«rcaktimin e grupeve tĂ« ndryshme rregullash tĂ« qasjes pĂ«r komandat me mundĂ«sinĂ« e bashkimit tĂ« disa selektorĂ«ve (grupeve tĂ« autorizimit) me çdo pĂ«rdorues. Ădo çelĂ«s mund tĂ« identifikohet me njĂ« sĂ«rĂ« tĂ« caktuar autorizimesh, pĂ«r shembull, Ă«shtĂ« e mundur tĂ« kufizohet qasja vetĂ«m nĂ« lexim apo shkrim tĂ« njĂ« nĂ«ngrupi tĂ« caktuar çelesh.
- ĂshtĂ« ofruar njĂ« implementim i funksionueshĂ«m nĂ« klaster me seksione (sharded), i paradigmes sĂ« shpĂ«rndarjes sĂ« mesazheve nĂ«pĂ«rmjet abonimit (Publish-Subscribe), ku mesazhi dĂ«rgohet nĂ« njĂ« nyje tĂ« caktuar, pĂ«r tĂ« cilĂ«n Ă«shtĂ« e lidhur kanali i mesazheve, dhe mĂ« pas ky mesazh ri-dĂ«rgohet nĂ« nyjet e tjera qĂ« pĂ«rfshihen nĂ« seksion (shard). KlientĂ«t mund tĂ« marrin mesazhe nĂ«pĂ«rmjet abonimit nĂ« kanal, duke u lidhur ose me nyjĂ«n kryesore, ose me nyjet ndihmĂ«se tĂ« seksionit. Menaxhimi bĂ«het me komandat SSUBSCRIBE, SUNSUBSCRIBE dhe SPUBLISH.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r pĂ«rpunimin e nĂ«nkomandave nĂ« shumicĂ«n e konteksteve.
- Janë shtuar komandat e reja:
- 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.
- Tani u jep mundësinë për të përpunuar disa konfiguracione në një thirrje CONFIG SET/GET.
- Opsionet «âjson», «-2», «âscan», «âfunctions-rdb» janĂ« shtuar nĂ« utilitarin redis-cli.
- Shkalla e qasjes në parametra dhe komandat që ndikojnë në siguri është çaktivizuar për klientët (p.sh., komandat DEBUG dhe MODULE janë çaktivizuar, ndalohet ndryshimi i konfiguracioneve me flagun PROTECTED_CONFIG). Në redis-cli është ndaluar shkrimi në skedarin e historisë së komandave që përmbajnë të dhëna konfidenciale.
- Janë bërë optimizime të shumta për të përmirësuar performancën dhe për të reduktuar konsumimin e memories. Për shembull, është ulur ndjeshëm konsumi i memories në modin klaster, gjatë operacioneve copy-on-write dhe në punën me heshat dhe çelësat e zset. Logjika e shkrimit të të dhënave në disk (thirrja fsync) është përmirësuar. Numri i paketave rrjet dhe thirrjeve sistematike gjatë dërgimit të përgjigjeve për klientin është reduktuar. Efiçenca e replikimit është rritur.
- Rregulluar problemi i sigurisë CVE-2022-24735 në ambientin e ekzekutimit të skripteve Lua, që lejon zëvendësimin e kodit tuaj Lua dhe arritjen e ekzekutimit të tij në kontekstin e një përdoruesi tjetër, përfshirë ato me privilegje më të larta.
- Rregulluar problemi i sigurisë CVE-2022-24736, që lejon ndalimin e papritur të procesit redis-server për shkak të dereferencimit të një treguesi të null. Sulmi realizohet përmes ngarkimit të skripteve Lua të formatuara posaçërisht.
Burimi: opennet.ru
