Izdanje Redis 7.0 DBMS

Objavljeno je izdanje Redis 7.0 DBMS-a koji pripada klasi NoSQL sustava. Redis pruža funkcije za pohranjivanje podataka ključ/vrijednost, poboljšane podrškom za formate strukturiranih podataka kao što su popisi, hashovi i skupovi, kao i mogućnost pokretanja rukovatelja skriptama na strani poslužitelja u Lua. Kod projekta isporučuje se pod licencom BSD. Dodatni moduli koji nude napredne mogućnosti za korporativne korisnike, kao što su RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, isporučuju se pod vlasničkom licencom RSAL od 2019. Projekt GoodFORM, koji u posljednje vrijeme stagnira, pokušao je nastaviti razvoj otvorenih verzija ovih modula pod licencom AGPLv3.

Za razliku od sustava za pohranu u memoriji kao što je Memcached, Redis osigurava da su podaci trajno pohranjeni na disku i osigurava da baza podataka ostane netaknuta u slučaju pada. Izvorni kod projekta distribuira se pod BSD licencom. Biblioteke klijenata dostupne su za većinu popularnih jezika, uključujući Perl, Python, PHP, Java, Ruby i Tcl. Redis podržava transakcije, koje vam omogućuju izvršavanje grupe naredbi u jednom koraku, osiguravajući dosljednost i dosljednost (naredbe iz drugih zahtjeva ne mogu ometati) u izvršavanju zadanog skupa naredbi, a u slučaju problema, omogućujući vam vraćanje promjene. Svi podaci su u potpunosti predmemorirani u RAM-u.

Naredbe kao što su inkrement/dekrement, standardne operacije popisa i skupa (unija, presjek), preimenovanje tipki, višestruki odabiri i funkcije sortiranja dostupne su za upravljanje podacima. Podržana su dva načina pohrane: periodična sinkronizacija podataka na disk i održavanje dnevnika promjena na disku. U drugom slučaju zajamčena je potpuna sigurnost svih promjena. Moguće je organizirati master-slave replikaciju podataka na nekoliko poslužitelja, koja se provodi u načinu rada bez blokiranja. Dostupan je i način slanja poruka "objavi/pretplati se", u kojem se stvara kanal s kojeg se poruke distribuiraju klijentima putem pretplate.

Ključne promjene u Redisu 7.0:

  • Dodana podrška za funkcije na strani poslužitelja. Za razliku od prethodno podržanih skripti na jeziku Lua, funkcije nisu vezane uz aplikaciju i usmjerene su na implementaciju dodatne logike koja proširuje mogućnosti poslužitelja. Funkcije se obrađuju neraskidivo s podacima iu odnosu na bazu podataka, a ne na aplikaciju, uključujući repliciranje i pohranjivanje u trajnu pohranu.
  • Predloženo je drugo izdanje ACL-a, koje vam omogućuje kontrolu pristupa podacima na temelju ključeva i omogućuje vam definiranje različitih skupova pravila za pristup naredbama s mogućnošću vezanja nekoliko selektora (skupova dopuštenja) za svakog korisnika. Svaki ključ može se identificirati određenim ovlaštenjem, na primjer, možete ograničiti pristup samo na čitanje ili pisanje određenog podskupa ključeva.
  • Omogućena je particionirana (razdijeljena) implementacija paradigme distribucije poruka Objavi-Pretplati koja se izvodi u klasteru, u kojoj se poruka šalje određenom čvoru na koji je priložen kanal poruka, nakon čega se ta poruka preusmjerava na preostale uključene čvorove u krhotini. Klijenti mogu primati poruke pretplatom na kanal, kako povezivanjem na glavni čvor tako i na sekundarne čvorove odjeljka. Kontrola se vrši pomoću naredbi SSUBSCRIBE, SUNSUBSCRIBE i SPUBLISH.
  • Dodana podrška za obradu podnaredbi u većini konteksta.
  • Nove dodane naredbe:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • PUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, EXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNKCIJA *, FCALL, FCALL_RO.
    • DOKUMENTI NAREDBI, POPIS NAREDBI.
    • HISTOGRAM LATENCIJE.
    • KLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • KLIJENT BEZ IZGONJA.
    • ACL DRYRUN.
  • Omogućena je mogućnost obrade više konfiguracija odjednom u jednom pozivu CONFIG SET/GET.
  • Opcije “-json”, “-2”, “-scan”, “-functions-rdb” dodane su uslužnom programu redis-cli.
  • Prema zadanim postavkama, pristup klijenta postavkama i naredbama koje utječu na sigurnost je onemogućen (na primjer, naredbe DEBUG i MODULE su onemogućene, mijenjanje konfiguracija s oznakom PROTECTED_CONFIG je zabranjeno). Redis-cli više ne šalje naredbe koje sadrže osjetljive podatke u datoteku povijesti.
  • Uveden je veliki dio optimizacija s ciljem povećanja performansi i smanjenja potrošnje memorije. Na primjer, potrošnja memorije značajno je smanjena kada se omogući klasterski način rada, kada se izvode operacije kopiranja na pisanje i kada se radi s hashovima i zset ključevima. Poboljšana logika za ispiranje podataka na disk (fsync poziv). Smanjen je broj mrežnih paketa i sistemskih poziva prilikom slanja odgovora klijentu. Učinkovitost replikacije je poboljšana.
  • Ispravljena je ranjivost CVE-2022-24735 u okruženju za izvršavanje Lua skripti, što vam omogućuje da zamijenite vlastiti Lua kod i postignete njegovo izvršenje u kontekstu drugog korisnika, uključujući i onog s višim privilegijama.
  • Ispravljena je ranjivost CVE-2022-24736, koja omogućuje pad procesa redis-poslužitelja zbog dereferencije NULL pokazivača. Napad se izvodi učitavanjem posebno dizajniranih Lua skripti.

Izvor: opennet.ru

Dodajte komentar