Avaldatud on Redis 7.0 andmehalduse süsteem, mis kuulub NoSQL süsteemide klassi. Redis pakub funktsioone andmete salvestamiseks võtme/väärtuse formaadis, millel on laiendatud toetus struktureeritud andmevormingutele, nagu loendid, hash’id ja hulkade kätkek. Samuti on võimalik serveri poolel käitada Lua keeles skripte. Projekti kood on saadaval BSD litsentsi alusel. Täiendavad moodulid, mis pakuvad laiendatud võimalusi ettevõtete kasutajatele, nagu RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, on alates 2019. aastast saadaval omandiõiguse RSAL litsentsi alusel. Avatud varianti nende moodulite all AGPLv3 litsentsi all üritas arendada projekt GoodFORM, mis on viimasel ajal olnud stagnatsioonis.
Erinevalt mäluandmetest, nagu Memcached, tagab Redis andmete püsiva salvestamise kettale ja garanteerib andmebaasi säilimise ootamatute katkemiste korral. Projekti lähtekood on saadaval BSD litsentsi kohaselt. Klientide raamatukogud on saadaval enamikule populaarsetest keeltest, sealhulgas Perl, Python, PHP, Java, Ruby ja Tcl. Redis toetab tehingute tegemist, mis võimaldavad ühes etapis rühma käsklusi läbi viia, garanteerides järjepidevuse ja konsistentsi (teised päringud ei saa sekkuda) antud käskluste komplekti täitmisel ning probleemide korral võimaldavad muudatusi tagasi võtta. Kõik andmed vaheldumatult vahemälus.
Andmete haldamiseks on saadaval sellised käsud nagu inkrement/dekrement, standardoperatsioonid loendite ja hulkade (ühendamine, ristumine), võtmete ümbernimetamine, mitme valiku tegemine ja sorteerimisfunktsioonid. Toetatakse kahte salvestusrežiimi: andmete perioodiline sünkroonimine kettale ja muutuste logi säilitamine kettal. Teises režiimis tagatakse kõigi muudatuste täielik säilimine. On võimalik korraldada master-slave andmete replikatsiooni mitmele serverid, mis toimub mitteblokeerivas režiimis. Samuti on saadaval sõnumite vahetamise režiim "publish/subscribe", mille korral luuakse kanal, mille sõnumid levivad klientidele tellimuse alusel.
Olulised muudatused Redis 7.0:
- Sisse on toodud toetused funktsioonide käitamiseks serveri poolel serverilt. Erinevalt varasematest toetatud Lua keeles skriptidest ei ole funktsioonid seotud rakendusega ja on suunatud täiendava loogika teostamisele, mis laiendab serveri võimalusi. Funktsioonid töödeldakse andmetega katkematult ja seotakse andmebaasi, mitte rakendusega, sealhulgas need replitseeritakse ja salvestatakse püsivasse salvestusse.
- Esitatud on ACL-i teine redaktsioon, mis võimaldab hallata juurdepääsu andmetele võtmete alusel ja võimaldab määrata erinevaid reeglite komplekte käskude jaoks, sidudes mitu selektorit (volituste komplekti) iga kasutajaga. Iga võti võib olla seotud teatud volitustega, näiteks saab piirata juurdepääsu ainult lugemiseks või kirjutamiseks teatud võtmete alamhulgale.
- Töös on klastris töötav jagatud (sharded) teatiste levitamise mudel (Publish-Subscribe), kus teave saadetakse konkreetsele sõlmele, millega on seotud teavituskana, ning seejärel suunatakse teave teistele sõlmedele, mis kuuluvad sektsiooni (shard). Klientidel on võimalik tellida teateid kanalist, ühendudes nii peamise sõlme kui ka sektsiooni sekundaarsete sõlmedega. Halduse teostamiseks kasutatakse käske SSUBSCRIBE, SUNSUBSCRIBE ja SPUBLISH.
- Lisatud on toe alamhäälestuste töötlemiseks enamikus kontekstides.
- Uued käsud on lisatud:
- 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.
- Paindlikkuse tegemine mitme konfiguratsiooni töötlemiseks ühes CONFIG SET/GET kutses.
- redis-cli utiliidile on lisatud valikud „—json”, „-2”, „—scan”, „—functions-rdb”.
- Vaikimisi on klientide juurdepääs seadetesse ja käskudesse, mis mõjutavad turvalisust, keelatud (nt on keelatud käsklused DEBUG ja MODULE, ei tohi muuta konfiguratsioone PROTECTED_CONFIG lipuga). redis-cli-s on peatatud käskude ajaloo kirjutamine faili, mis sisaldab konfidentsiaalset teavet.
- Tehtud on suur hulk optimeerimisi, mille eesmärk on tõsta jõudlust ja vähendada mälutarbimist. Näiteks on oluliselt vähenenud mälutarbimine klastrirežiimi sisselülitamisel, copy-on-write toimingute tegemisel ja hashide ja zset võtmetega töötamisel. Parandatud on andmete kirjutamise loogikat kettale (fsync-i kõne). Vähendatud on võrgu pakettide ja süsteemi kõnede arvu kliendile vastuste saatmisel. Suurendatud on replikeerimise efektiivsust.
- Parandatud CVE-2022-24735 haavatavust Lua-skriptide täitmise keskkonnas, mis võimaldas sisestada oma Lua-koodi ja täita seda teise kasutaja, sealhulgas kõrgemate õigustega kasutaja kontekstis.
- Parandatud CVE-2022-24736 haavatavust, mis võimaldas redis-serveri protsessi kokkujooksmise nullpunkti dereferentimise tõttu. Rünnak tehakse spetsiaalselt vormistatud Lua-skriptide laadimise kaudu.
Allikas: opennet.ru
