Izdaja Redis 7.0 DBMS

Objavljena je bila izdaja Redis 7.0 DBMS, ki spada v razred sistemov NoSQL. Redis ponuja funkcije za shranjevanje podatkov ključ/vrednost, izboljšane s podporo za formate strukturiranih podatkov, kot so seznami, zgoščene vrednosti in nabori, kot tudi zmožnost izvajanja obdelovalnikov skriptov na strani strežnika v Lua. Projektna koda je na voljo pod licenco BSD. Dodatni moduli, ki ponujajo napredne zmogljivosti za korporativne uporabnike, kot so RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, so od leta 2019 dobavljeni pod lastniško licenco RSAL. Projekt GoodFORM, ki zadnje čase stagnira, je poskušal nadaljevati razvoj odprtih različic teh modulov pod licenco AGPLv3.

Za razliko od sistemov za shranjevanje v pomnilniku, kot je Memcached, Redis zagotavlja, da so podatki trajno shranjeni na disku, in zagotavlja, da baza podatkov ostane nedotaknjena v primeru zrušitve. Izvorna koda projekta se distribuira pod licenco BSD. Odjemalske knjižnice so na voljo za večino priljubljenih jezikov, vključno s Perlom, Pythonom, PHP, Javo, Rubyjem in Tcl. Redis podpira transakcije, ki vam omogočajo, da izvedete skupino ukazov v enem koraku, kar zagotavlja doslednost in doslednost (ukazi iz drugih zahtev ne morejo motiti) v izvajanju danega nabora ukazov, v primeru težav pa vam omogoča, da se vrnete nazaj spremembe. Vsi podatki so v celoti shranjeni v predpomnilniku RAM.

Za upravljanje podatkov so na voljo ukazi, kot so povečanje/zmanjšanje, standardne operacije seznama in nabora (združevanje, presečišče), preimenovanje ključev, več izbir in funkcije razvrščanja. Podprta sta dva načina shranjevanja: občasna sinhronizacija podatkov na disk in vzdrževanje dnevnika sprememb na disku. V drugem primeru je zagotovljena popolna varnost vseh sprememb. Možno je organizirati podvajanje podatkov master-slave na več strežnikov, ki se izvaja v načinu brez blokiranja. Na voljo je tudi način sporočanja »objavi/naroči«, v katerem se ustvari kanal, sporočila iz katerega se pošiljajo strankam z naročnino.

Ključne spremembe v Redis 7.0:

  • Dodana podpora za funkcije na strani strežnika. Za razliko od prej podprtih skriptov v jeziku Lua, funkcije niso vezane na aplikacijo in so usmerjene v implementacijo dodatne logike, ki širi zmogljivosti strežnika. Funkcije se obdelujejo neločljivo s podatki in v povezavi z bazo podatkov in ne z aplikacijo, vključno s podvajanjem in shranjevanjem v trajnem pomnilniku.
  • Predlagana je bila druga izdaja ACL, ki omogoča nadzor dostopa do podatkov na podlagi ključev in omogoča definiranje različnih nizov pravil za dostop do ukazov z možnostjo vezave več izbirnikov (nizov dovoljenj) na vsakega uporabnika. Vsak ključ je mogoče identificirati z določenim pooblastilom, na primer lahko omejite dostop samo na branje ali pisanje določene podnabora ključev.
  • Zagotovljena je particionirana (razdrobljena) izvedba paradigme distribucije sporočil Objavi-Naroči, ki se izvaja v gruči, v kateri je sporočilo poslano določenemu vozlišču, na katerega je pritrjen sporočilni kanal, nato pa je to sporočilo preusmerjeno na preostala vključena vozlišča v drobcu. Stranke lahko prejemajo sporočila tako, da se naročijo na kanal, tako s povezavo na glavno vozlišče kot na sekundarna vozlišča razdelka. Nadzor se izvaja z ukazi SSUBSCRIBE, SUNSUBSCRIBE in SPUBLISH.
  • Dodana podpora za obdelavo podukazov v večini kontekstov.
  • Dodani novi ukazi:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • PUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNKCIJA *, FCALL, FCALL_RO.
    • DOKUMENTI UKAZOV, SEZNAM UKAZOV.
    • LATENCNI HISTOGRAM.
    • DRUŠKI GRUČE, POVEZAVE GRUČE, DELSLOTSRANGE GRUČE, RAZPON ADDSLOTS GRUČE.
    • STRANKE BREZ IZSELJITVE.
    • ACL DRYRUN.
  • Zagotovljena je bila možnost obdelave več konfiguracij hkrati v enem klicu CONFIG SET/GET.
  • Možnosti »-json«, »-2«, »-scan«, »-functions-rdb« so bile dodane pripomočku redis-cli.
  • Privzeto je dostop odjemalca do nastavitev in ukazov, ki vplivajo na varnost, onemogočen (na primer ukaza DEBUG in MODULE sta onemogočena, spreminjanje konfiguracij z zastavico PROTECTED_CONFIG je prepovedano). Redis-cli ne izpisuje več ukazov, ki vsebujejo občutljive podatke, v datoteko zgodovine.
  • Uveden je bil velik del optimizacij, katerih cilj je povečati zmogljivost in zmanjšati porabo pomnilnika. Na primer, poraba pomnilnika je bila znatno zmanjšana pri omogočanju načina gruče, pri izvajanju operacij kopiranja ob pisanju in pri delu z zgoščenimi vrednostmi in ključi zset. Izboljšana logika za izpiranje podatkov na disk (klic fsync). Zmanjšano je število omrežnih paketov in sistemskih klicev pri pošiljanju odgovorov odjemalcu. Učinkovitost replikacije je bila izboljšana.
  • Ranljivost CVE-2022-24735 v okolju za izvajanje skriptov Lua je bila odpravljena, kar vam omogoča, da zamenjate svojo kodo Lua in dosežete njeno izvajanje v kontekstu drugega uporabnika, tudi tistega z višjimi privilegiji.
  • Odpravljena ranljivost CVE-2022-24736, ki omogoča, da se proces redis-server zruši zaradi deimenovanja kazalca NULL. Napad se izvede z nalaganjem posebej oblikovanih skriptov Lua.

Vir: opennet.ru

Dodaj komentar