Lansarea DBMS Redis 7.0, care aparține clasei de sisteme NoSQL, a fost publicată. Redis oferă funcții pentru stocarea datelor cheie/valoare, îmbunătățite prin suport pentru formate de date structurate, cum ar fi liste, hash-uri și seturi, precum și capacitatea de a rula handlere de script pe server în Lua. Codul proiectului este furnizat sub licența BSD. Module suplimentare care oferă capabilități avansate pentru utilizatorii corporativi, cum ar fi RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, sunt furnizate sub o licență proprie RSAL din 2019. Proiectul GoodFORM, care a stagnat recent, a încercat să continue dezvoltarea versiunilor deschise ale acestor module sub licența AGPLv3.
Spre deosebire de sistemele de stocare în memorie, cum ar fi Memcached, Redis se asigură că datele sunt stocate în mod persistent pe disc și se asigură că baza de date rămâne intactă în cazul unui accident. Codul sursă al proiectului este distribuit sub licența BSD. Bibliotecile client sunt disponibile pentru cele mai populare limbi, inclusiv Perl, Python, PHP, Java, Ruby și Tcl. Redis acceptă tranzacții, care vă permit să executați un grup de comenzi într-un singur pas, asigurând consistența și consistența (comenzile de la alte solicitări nu pot interfera) în execuția unui anumit set de comenzi și, în caz de probleme, permițându-vă să reveniți schimbări. Toate datele sunt complet stocate în memoria RAM.
Comenzile de gestionare a datelor includ incrementare/decrementare, operații standard de listă și seturi (uniune, intersecție), redenumire taste, selecții multiple și funcții de sortare. Sunt acceptate două moduri de stocare: sincronizarea periodică a datelor pe disc și menținerea unui jurnal de modificări pe disc. Acesta din urmă garantează conservarea completă a tuturor modificărilor. Replicarea datelor master-slave pe mai multe instanțe este, de asemenea, posibilă. servere, efectuat în modul fără blocare. Este disponibil și un mod de mesagerie publicare/abonare, care creează un canal din care mesajele sunt distribuite clienților prin abonament.
Modificări cheie în Redis 7.0:
- Suport adăugat pentru funcțiile executate lateral ServerSpre deosebire de scripturile Lua acceptate anterior, funcțiile nu sunt specifice aplicației și sunt concepute pentru a implementa o logică suplimentară care extinde capacitățile serverului. Funcțiile sunt procesate perfect împreună cu datele și sunt legate de baza de date, nu de aplicație, fiind replicate și stocate în memoria persistentă.
- A fost propusă o a doua ediție a ACL, care vă permite să controlați accesul la date pe baza cheilor și vă permite să definiți diferite seturi de reguli pentru accesarea comenzilor cu posibilitatea de a lega mai mulți selectori (seturi de permisiuni) fiecărui utilizator. Fiecare cheie poate fi identificată cu o anumită autoritate, de exemplu, puteți limita accesul doar la citirea sau scrierea unui anumit subset de chei.
- Este furnizată o implementare partiționată (sharded) a paradigmei de distribuție a mesajelor Publicare-Abonare care rulează într-un cluster, în care un mesaj este trimis la un anumit nod la care este atașat un canal de mesaje, după care acest mesaj este redirecționat către nodurile rămase incluse. în ciob. Clienții pot primi mesaje abonându-se la un canal, atât prin conectarea la nodul principal, cât și la nodurile secundare ale secțiunii. Controlul se realizează folosind comenzile SSUBSCRIBE, SUNSUBSCRIBE și SPUBLISH.
- S-a adăugat suport pentru procesarea subcomenzilor în majoritatea contextelor.
- S-au adăugat comenzi noi:
- ZMPOP, BZMPOP.
- LMPOP, BLMPOP.
- SINTERCARD, ZINTERCARD.
- SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
- EXPIRETIME, PEXPIRETIME.
- EVAL_RO, EVALSHA_RO, SORT_RO.
- FUNCȚIE *, FCALL, FCALL_RO.
- DOCUMENTE DE COMANDĂ, LISTA DE COMANDĂ.
- HISTOGRAMA DE LATENȚĂ.
- CLUSTER SHARDS, CLUSTER LINK-URI, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
- CLIENTUL NU-EVICT.
- ACL DRYRUN.
- A fost oferită capacitatea de a procesa mai multe configurații simultan într-un singur apel CONFIG SET/GET.
- Opțiunile „-json”, „-2”, „-scan”, „-functions-rdb” au fost adăugate la utilitarul redis-cli.
- În mod implicit, accesul clientului la setările și comenzile care afectează securitatea este dezactivat (de exemplu, comenzile DEBUG și MODULE sunt dezactivate, modificarea configurațiilor cu flag PROTECTED_CONFIG este interzisă). redis-cli nu mai scoate comenzile care conțin date sensibile într-un fișier istoric.
- A fost introdusă o mare parte a optimizărilor care vizează creșterea performanței și reducerea consumului de memorie. De exemplu, consumul de memorie a fost redus semnificativ la activarea modului cluster, la efectuarea operațiunilor de copiere la scriere și la lucrul cu tastele hash și zset. Logica îmbunătățită pentru spălarea datelor pe disc (apel fsync). Numărul de pachete de rețea și apeluri de sistem la trimiterea răspunsurilor către client a fost redus. Eficiența replicării a fost îmbunătățită.
- Vulnerabilitatea CVE-2022-24735 din mediul de executare a scripturilor Lua a fost remediată, ceea ce vă permite să înlocuiți propriul cod Lua și să realizați executarea acestuia în contextul altui utilizator, inclusiv al unuia cu privilegii mai mari.
- S-a remediat vulnerabilitatea CVE-2022-24736, care permite ca procesul redis-server să se blocheze din cauza dereferinței pointerului NULL. Atacul este efectuat prin încărcarea de scripturi Lua special concepute.
Sursa: opennet.ru
