Ilmunud on Redis 7.0, mis kuulub NoSQL sĂŒsteemide klassi. Redis pakub vĂ”tmevÀÀrtuse formaadis andmete salvestamise funktsioone, laiendades seda struktureeritud andmevormingute, nagu loendid, hash'id ja kogud, toe ning vĂ”imalusega kĂ€itada serveripoolseid skripte Lua keeles. Projekti kood on saadaval BSD litsentsi alusel. TĂ€iendavad moodulid, mis pakuvad ettevĂ”tte kasutajatele laienenud vĂ”imalusi, nagu RediSearch, RedisGraph, RedisJSON, RedisML ja RedisBloom, on alates 2019. aastast saadaval eralitsentsi RSAL alusel. Avatud andmemoodulite arenduse jĂ€tkamine AGPLv3 litsentsi all on olnud GoodFORM projekti katsetus, mis on viimastel aegadel stagnatsioonis.
Erinevalt mĂ€lus hoidmise sĂŒsteemidest, nagu Memcached, tagab Redis andmete pĂŒsiva salvestamise kettale ja garanteerib andmebaasi sĂ€ilimise juhusliku sulgemise korral. Projekti allikakoodid levitatakse BSD litsentsi alusel. Klientteegid on saadaval enamikus populaarsetes programmeerimiskeeltes, sealhulgas Perl, Python, PHP, Java, Ruby ja Tcl. Redis toetab tehinguid, mis vĂ”imaldavad ĂŒhest tehingust tĂ€ita rĂŒhma kĂ€ske, tagades jĂ€rjepidevuse ja konsistentsi (teiste pĂ€ringute kĂ€sud ei saa sekkuda) antud kĂ€sudekompleksi tĂ€itmisel ning probleemide korral vĂ”imaldades muudatusi tagasi vĂ”tta. KĂ”ik andmed salvestatakse tĂ€ielikult mĂ€lus.
Andmete haldamiseks on saadaval sellised kĂ€sud nagu inkrement-/dekrement, tavalised toimingud loendite ja hulkadega (ĂŒhendamine, ristumine), vĂ”tmete ĂŒmbernimetamine, mitme valiku tegemine ja sorteerimisfunktsioonid. Toetatakse kahte salvestusreĆŸiimi: andmete perioodne sĂŒnkroonimine diskiga ja muudatuste logimise pidamine. Teise juhtumi korral tagatakse kĂ”igi muudatuste tĂ€ielik sĂ€ilitamine. On vĂ”imalik korraldada master-slave andmete replikatsiooni mitmesse serverite, mis toimub blokeerimata reĆŸiimis. Saadaval on ka sĂ”numite vahetamise reĆŸiim âpublikatsioon/annetusâ, kus luuakse kanal, mille teated levivad tellijatele.
Redis 7.0 olulised muudatused:
- Toetatud on poole peal teostatavad funktsioonid serverile. Erinevalt varem toetatud Lua skriptidest ei ole funktsioonid rakendusele seotud ja suunatud tĂ€iendava loogika rakendamisele, mis laiendab serveri vĂ”imalusi. Funktsioonid töötlevad andmete kaudu ja on seotud andmebaasiga, mitte rakendusega, sealhulgas replitseeritakse ja salvestatakse pĂŒsivasse salvestusse.
- Esitatud ACL teine ââredaktsioon vĂ”imaldab hallata juurdepÀÀsu andmetele pĂ”hineb vĂ”tmetel ning toetab erinevate juurdepÀÀsureeglite kogude mÀÀratlemist kĂ€skudele, vĂ”imaldades siduda mitmeid valijaid (volituste kogusid) igale kasutajale. Iga vĂ”ti vĂ”ib olla seotud teatud volitustega, nĂ€iteks vĂ”ib piirata juurdepÀÀsu ainult lugemiseks vĂ”i kirjutamiseks teatud vĂ”tmete alamhulga jaoks.
- Esitatud klastris töötav sektioneeritud (sharded) teostus sĂ”numite levitamise avalduse (Publish-Subscribe) paradigma osas, kus sĂ”num saadetakse kindlale sĂ”lmele, millega on seotud sĂ”numikanal, pĂ€rast mida suunatakse see sĂ”num edasi teistele sĂ”lmedele, mis kuuluvad sektsiooni (shard). Klientidel on vĂ”imalus saada sĂ”numeid sĂ”numikanalile, kui nad ĂŒhendavad end kas pĂ”hijalale vĂ”i sektsiooni teisesele sĂ”lmele. Halduse teostamiseks kasutatakse kĂ€ske SSUBSCRIBE, SUNSUBSCRIBE ja SPUBLISH.
- Suurendatud toimetamise toimetamise toetust enamikus kontekstides.
- Lisatud uued kÀsud:
- 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.
- On antud vÔimalus töödelda mitmeid konfigureerimist kohe CONFIG SET/GET kÔnes.
- Tööriista redis-cli on lisatud valikud «âjson», «-2», «âscan», «âfunctions-rdb».
- Vaikimisi on klientide juurdepÀÀs seadetesse ja kÀskudesse, mis mÔjutavad turvalisust, keelatud (nÀiteks on keelatud kÀsud DEBUG ja MODULE, samuti on keelatud konfigureerimist muuta PROTECTED_CONFIG lipuga). redis-cli-s on lÔpetatud konfidentsiaalsete andmete sisaldava kÀsuhistoria faili vÀljund.
- Tehtud on suur hulk optimeerimisi, mille eesmĂ€rk on suurendada jĂ”udlust ja vĂ€hendada mĂ€lutarbimist. NĂ€iteks on oluliselt vĂ€hendatud mĂ€lutarbimist, kui klastrireĆŸiim on sisse lĂŒlitatud, teostatakse copy-on-write toimingute sooritamisel ja töötatakse hĂ€shtide ja zset vĂ”tmega. Parandatud on andmete kettale kirjutamise (fsync kutsete) loogikat. VĂ€hendatud on vĂ”rgupakettide ja sĂŒsteemikĂ”nede arvu, kui kliendile vastuseid saadetakse. Suurendatud on replikatsiooni efektiivsust.
- Kinnitatud haav CVE-2022-24735 Lua-skriptide tÀitmise keskkonnas, mis vÔimaldab sisestada oma Lua-koodi ja saavutada selle tÀitmise teise kasutaja kontekstis, sealhulgas kÔrgemate privileegidega kasutajate kontekstis.
- Kinnitatud haav CVE-2022-24736, mis vĂ”imaldab redis-serveri protsessi kokkuvarisemist nullviitaja tĂ”lgendamise tĂ”ttu. RĂŒnnak toimub spetsiaalselt vormindatud Lua-skriptide laadimise kaudu.
Allikas: opennet.ru
