Rilascio del DBMS Redis 7.0

È stata pubblicata la release del DBMS Redis 7.0, che appartiene alla classe dei sistemi NoSQL. Redis fornisce funzioni per l'archiviazione di dati chiave/valore, migliorate dal supporto per formati di dati strutturati come elenchi, hash e set, nonché dalla possibilità di eseguire gestori di script lato server in Lua. Il codice del progetto è fornito sotto la licenza BSD. Moduli aggiuntivi che offrono funzionalità avanzate per gli utenti aziendali, come RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, sono forniti con una licenza RSAL proprietaria dal 2019. Il progetto GoodFORM, recentemente stagnante, ha cercato di continuare lo sviluppo di versioni aperte di questi moduli sotto la licenza AGPLv3.

A differenza dei sistemi di archiviazione in memoria come Memcached, Redis garantisce che i dati siano archiviati in modo persistente su disco e garantisce che il database rimanga intatto in caso di arresto anomalo. Il codice sorgente del progetto è distribuito sotto la licenza BSD. Le librerie client sono disponibili per i linguaggi più diffusi, tra cui Perl, Python, PHP, Java, Ruby e Tcl. Redis supporta le transazioni, che consentono di eseguire un gruppo di comandi in un unico passaggio, garantendo coerenza e coerenza (i comandi di altre richieste non possono interferire) nell'esecuzione di un determinato insieme di comandi e, in caso di problemi, consentendo di eseguire il rollback i cambiamenti. Tutti i dati sono completamente memorizzati nella cache nella RAM.

Per la gestione dei dati vengono forniti comandi come incremento/decremento, elenchi standard e operazioni di insieme (unione, intersezione), ridenominazione dei tasti, selezioni multiple e funzioni di ordinamento. Sono supportate due modalità di archiviazione: sincronizzazione periodica dei dati su disco e mantenimento di un registro delle modifiche su disco. Nel secondo caso è garantita la completa sicurezza di tutte le modifiche. È possibile organizzare la replica dei dati master-slave su più server, effettuata in modalità non bloccante. È inoltre disponibile una modalità di messaggistica "pubblica/sottoscrivi", in cui viene creato un canale dal quale i messaggi vengono distribuiti ai clienti tramite abbonamento.

Modifiche principali in Redis 7.0:

  • Aggiunto il supporto per le funzioni lato server. A differenza degli script precedentemente supportati in linguaggio Lua, le funzioni non sono legate all'applicazione e mirano a implementare una logica aggiuntiva che espande le capacità del server. Le funzioni vengono elaborate in modo inestricabile con i dati e in relazione al database e non all'applicazione, inclusa la replica e l'archiviazione in un archivio persistente.
  • È stata proposta una seconda edizione dell'ACL, che permette di controllare l'accesso ai dati in base a chiavi e permette di definire diversi insiemi di regole per l'accesso ai comandi con la possibilità di associare più selettori (insiemi di permessi) a ciascun utente. Ogni chiave può essere identificata con un'autorità specifica, ad esempio è possibile limitare l'accesso solo alla lettura o alla scrittura di un determinato sottoinsieme di chiavi.
  • Viene fornita un'implementazione partizionata (sharded) del paradigma di distribuzione dei messaggi Publish-Subscribe in esecuzione in un cluster, in cui un messaggio viene inviato a un nodo specifico a cui è collegato un canale di messaggi, dopodiché questo messaggio viene reindirizzato ai restanti nodi inclusi nel coccio. I client possono ricevere messaggi iscrivendosi ad un canale, sia collegandosi al nodo principale che ai nodi secondari della sezione. Il controllo viene eseguito utilizzando i comandi SSUBSCRIBE, SUNSUBSCRIBE e SPUBLISH.
  • Aggiunto il supporto per l'elaborazione dei sottocomandi nella maggior parte dei contesti.
  • Nuovi comandi aggiunti:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • SCADENZA, PESCADENZA.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNZIONE *, FCALL, FCALL_RO.
    • DOCUMENTI DEI COMANDI, ELENCO DEI COMANDI.
    • ISTOGRAMMA DI LATENZA.
    • SHARD DI CLUSTER, COLLEGAMENTI DI CLUSTER, CLUSTER DELSLOTSRANGE, CLUSTER ADSLOTSRANGE.
    • CLIENTE NON SFRATTO.
    • CORSA A SECCO ACL.
  • È stata fornita la possibilità di elaborare più configurazioni contemporaneamente in una chiamata CONFIG SET/GET.
  • Le opzioni "-json", "-2", "-scan", "-functions-rdb" sono state aggiunte all'utilità redis-cli.
  • Per impostazione predefinita, l'accesso client alle impostazioni e ai comandi che influiscono sulla sicurezza è disabilitato (ad esempio, i comandi DEBUG e MODULE sono disabilitati, la modifica delle configurazioni con il flag PROTECTED_CONFIG è vietata). Redis-cli non invia più comandi contenenti dati sensibili in un file di cronologia.
  • È stata introdotta gran parte delle ottimizzazioni volte ad aumentare le prestazioni e ridurre il consumo di memoria. Ad esempio, il consumo di memoria è stato notevolmente ridotto quando si abilita la modalità cluster, quando si eseguono operazioni di copia su scrittura e quando si lavora con hash e chiavi zset. Logica migliorata per lo scaricamento dei dati su disco (chiamata fsync). Il numero di pacchetti di rete e chiamate di sistema durante l'invio di risposte al client è stato ridotto. L'efficienza della replica è stata migliorata.
  • È stata corretta la vulnerabilità CVE-2022-24735 nell'ambiente per l'esecuzione degli script Lua, che consente di sostituire il proprio codice Lua e ottenerne l'esecuzione nel contesto di un altro utente, incluso uno con privilegi più elevati.
  • Risolta la vulnerabilità CVE-2022-24736, che consente al processo redis-server di bloccarsi a causa del dereferenziamento del puntatore NULL. L'attacco viene effettuato tramite il caricamento di script Lua appositamente progettati.

Fonte: opennet.ru

Aggiungi un commento