Redis 7.0 datubāzes izlaidums

Ir iznācis Redis 7.0 datu bāzes izlaidums, kas pieder pie NoSQL sistēmu klases. Redis nodrošina funkcijas datu glabāšanai atslēga/vērtība formātā, paplašinātas ar strukturēto datu formātu, piemēram, saraksti, haši un kopas atbalstu, kā arī iespējām izpildīt servera pusē skriptus apstrādātājus, izmantojot Lua valodu. Projekta kods tiek izplatīts saskaņā ar BSD licenci. Papildu moduļi, kas piedāvā paplašinātas iespējas korporatīvajiem lietotājiem, piemēram, RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, kopš 2019. gada tiek izsniegti saskaņā ar patentētu RSAL licenci. Atvērtu datu variantu attīstību šo moduļu ietvaros ar AGPLv3 licenci centās turpināt projekts GoodFORM, kurš pēdējā laikā ir piedzīvojis stagnāciju.

Atšķirībā no operatīvās atmiņas glabāšanas sistēmām, piemēram, Memcached, Redis nodrošina nemainīgu datu glabāšanu diskā un garantē datu bāzes saglabāšanu avārijas gadījumā. Projekta avota kodi tiek izplatīti saskaņā ar BSD licenci. Klienta bibliotēkas ir pieejamas lielākajai daļai populāro valodu, tostarp Perl, Python, PHP, Java, Ruby un Tcl. Redis atbalsta transakcijas, kas ļauj vienā solī veikt grupu komandu izpildi, garantējot konsekvenci un secību (citu pieprasījumu komandas nevar iejaukties) norādītajā komandu kopā un problēmu gadījumā ļaujot atkāpt izmaiņas. Visi dati tiek pilnībā kešoti operatīvajā atmiņā.

Datu pārvaldībai tiek piedāvāti tādi komandu rīki kā inkrementēšana/dekrementēšana, standarta operācijas ar sarakstiem un kopām (apvienošana, krustojums), atslēgu pārdēvēšana, vairāku izvēles un šķirošanas funkcijas. Atbalsta divus glabāšanas režīmus: periodisku datu sinhronizāciju uz diska un izmaiņu žurnāla uzturēšanu diskā. Otrajā gadījumā tiek garantēta visu izmaiņu pilnīga saglabāšana. Iespējama galvenās-un-vergu datu replikācija uz vairākām serveriem, kas tiek veikta bezbloķējošā režīmā. Pieejams arī ziņojumu apmaiņas režīms "publicēšana/pierakstīšanās", kur izveido kanālu, no kura ziņojumi tiek izplatīti abonentiem.

Galvenās izmaiņas Redis 7.0:

  • Pievienots atbalsts funkcijām, kas tiek izpildītas servera pusē serveris. Atšķirībā no iepriekš atbalstītajām Lua valodas skriptu versijām, funkcijas nav piesaistītas lietojumprogrammai un ir vērstas uz papildus loģikas īstenošanu, kas paplašina servera iespējas. Funkcijas tiek apstrādātas kopā ar datiem un piesaistītas datu bāzei, nevis lietojumprogrammai, tās arī tiek replikētas un saglabātas pastāvīgajā glabāšanā.
  • Tika piedāvāta otrā ACL redakcija, kas ļauj pārvaldīt piekļuvi datiem, balstoties uz atslēgām, un ļauj definēt dažādus piekļuves noteikumu komplektus komandām ar iespēju sasaistīt vairākus selektorus (pilnvaru komplektus) ar katru lietotāju. Katru atslēgu var identificēt ar noteiktām pilnvarām, piemēram, var ierobežot piekļuvi tikai lasīšanai vai ierakstīšanai noteiktā atslēgu apakškopā.
  • Ir piedāvāta darbībā esoša sekciju (sharded) izpilde ziņojumu izplatīšanas paradigmas (Publish-Subscribe), kurā ziņojums tiek nosūtīts konkrētam mezglam, kas ir piesaistīts ziņojumu kanālam, pēc tam šis ziņojums tiek pārsūtīts pārējiem mezgliem, kas pieder pie sekcijas (shard). Klienti var saņemt ziņojumus, abonējoties uz kanālu, gan pieslēdzoties pamatmezglam, gan sekundārajiem sekcijas mezgliem. Pārvaldību veic ar komandām SSUBSCRIBE, SUNSUBSCRIBE un SPUBLISH.
  • Pievienota atbalsta iespēja apakškomandu apstrādei lielākajā daļā kontekstu.
  • Pievienotas jaunas komandas:
    • 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.
  • Piedāvāta iespējā apstrādāt uzreiz vairākas konfigurācijas vienā izsaukumā CONFIG SET/GET.
  • Komandrindas rīkam redis-cli pievienotas opcijas "—json", „-2”, „—scan”, „—functions-rdb”.
  • Pēc noklusējuma atslēgta piekļuve klientiem iestatījumiem un komandām, kas ietekmē drošību (piemēram, atslēgtas komandas DEBUG un MODULE, aizliegta konfigurāciju izmaiņa ar PROTECTED_CONFIG zīmi). Rīks redis-cli vairs neizvada uz failu komandu vēsturi, kas satur konfidenciālus datus.
  • Veiktas plašas optimizācijas, lai uzlabotu veiktspēju un samazinātu atmiņas patēriņu. Piemēram, ievērojami samazināts atmiņas patēriņš, kad ir aktivizēts klastera režīms, veicot copy-on-write operācijas un strādājot ar hashiem un zset atslēgām. Uzlabota datu atpakaļsūtīšanas loģika diskā (fsync izsaukums). Samazināts tīkla paketu un sistēmas izsaukumu skaits atbilžu sūtīšanā klientam. Paaugstināta replikācijas efektivitāte.
  • Novērsta CVE-2022-24735 ievainojamība Lua skriptu izpildei paredzētajā vidē, kas ļauj ievietot savu Lua kodu un panākt tā izpildi cita lietotāja kontekstā, tostarp tāda, kam ir augstākas privilēģijas.
  • Novērsta CVE-2022-24736 ievainojamība, kas ļauj izraisīt redis-server procesa avāriju, iegūstot nulles rādītāja dereferencēšanu. Uzbrukums tiek veikts, ielādējot speciāli sagatavotus Lua skriptus.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster