Uscita del DBMS Redis 7.0

È stato pubblicato il rilascio del DBMS Redis 7.0, appartenente alla categoria dei sistemi NoSQL. Redis offre funzionalità per la memorizzazione dei dati in formato chiave/valore, arricchite dal supporto di formati di dati strutturati, come liste, hash e set, oltre alla possibilità di eseguire script sul server in linguaggio Lua. Il codice del progetto è rilasciato sotto licenza BSD. Moduli aggiuntivi, che offrono funzionalità avanzate per gli utenti aziendali, come RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, sono distribuiti dal 2019 sotto licenza proprietaria RSAL. Il progetto GoodFORM ha cercato di continuare lo sviluppo di varianti open source di questi moduli sotto licenza AGPLv3, ma recentemente è in stato di stagnazione.

A differenza dei sistemi di memorizzazione in memoria, come Memcached, Redis garantisce una memorizzazione persistente dei dati su disco e la sicurezza del database in caso di arresto anomalo. I codici sorgente del progetto sono distribuiti sotto licenza BSD. Le librerie client sono disponibili per la maggior parte dei linguaggi di programmazione popolari, tra cui Perl, Python, PHP, Java, Ruby e Tcl. Redis supporta le transazioni, consentendo di eseguire un gruppo di comandi in un singolo passaggio, garantendo coerenza e sequenzialità (i comandi di altre richieste non possono sovrapporsi) nell'esecuzione di un determinato insieme di comandi, e in caso di problemi consente di annullare le modifiche. Tutti i dati vengono memorizzati interamente in memoria.

Per gestire i dati, sono disponibili comandi come incremento/decremento, operazioni standard su liste e set (unione, intersezione), rinominazione delle chiavi, selezioni multiple e funzioni di ordinamento. Sono supportati due modalità di memorizzazione: sincronizzazione periodica dei dati su disco e registrazione su disco delle modifiche. Nel secondo caso, viene garantita la completa sicurezza di tutte le modifiche. È possibile organizzare la replica dei dati master-slave su più server, eseguita in modalità non bloccante. È disponibile anche una modalità di messaggistica "pubblicazione/sottoscrizione", in cui viene creato un canale, i cui messaggi vengono distribuiti ai clienti in base all'iscrizione.

Modifiche chiave in Redis 7.0:

  • Aggiunta supporto per funzioni eseguite sul server server. A differenza degli script precedentemente supportati in linguaggio Lua, le funzioni non sono legate all'applicazione e sono orientate all'implementazione di logiche aggiuntive che ampliano le capacità del server. Le funzioni vengono elaborate in modo indissolubile con i dati e in relazione al database, e non all'applicazione, inclusa la replica e il salvataggio in uno storage permanente.
  • È stata proposta una seconda revisione dell'ACL, che consente di gestire l'accesso ai dati basato su chiavi e permette la definizione di diversi set di regole di accesso ai comandi con la possibilità di associare più selettori (set di privilegi) a ciascun utente. Ogni chiave può essere identificata con determinati privilegi, ad esempio, è possibile limitare l'accesso in sola lettura o scrittura su un sottoinsieme specifico di chiavi.
  • È stata fornita un'implementazione funzionante in cluster della parudigma di distribuzione dei messaggi per iscrizione (Publish-Subscribe), in cui un messaggio viene inviato a un nodo specifico a cui è associato il canale di messaggi, dopodiché questo messaggio viene reindirizzato agli altri nodi che fanno parte della sezione (shard). I clienti possono ricevere messaggi iscritti al canale sia collegandosi al nodo principale che ai nodi secondari della sezione. La gestione avviene tramite i comandi SSUBSCRIBE, SUNSUBSCRIBE e SPUBLISH.
  • È stata aggiunta la supporto per l'elaborazione dei sottocomandi nella maggior parte dei contesti.
  • Sono stati aggiunti nuovi comandi:
    • 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.
  • È stata fornita la possibilità di elaborare più configurazioni in un'unica chiamata CONFIG SET/GET.
  • Sono state aggiunte all'utilità redis-cli le opzioni '—json', '-2', '—scan', '—functions-rdb'.
  • Per impostazione predefinita, l'accesso dei client alle impostazioni e ai comandi che influiscono sulla sicurezza è disabilitato (ad esempio, i comandi DEBUG e MODULE sono disabilitati, è vietata la modifica delle configurazioni con il flag PROTECTED_CONFIG). In redis-cli è stata interrotta la registrazione su file della cronologia dei comandi contenenti dati riservati.
  • È stata implementata una grande serie di ottimizzazioni mirate a migliorare le prestazioni e ridurre il consumo di memoria. Ad esempio, è stato notevolmente ridotto il consumo di memoria attivando la modalità cluster, durante le operazioni di copy-on-write e lavorando con hash e chiavi zset. È stata migliorata la logica di scrittura dei dati su disco (chiamata fsync). È stato ridotto il numero di pacchetti di rete e di chiamate ai sistemi durante l'invio delle risposte al cliente. È stata aumentata l'efficienza della replicazione.
  • È stata corretta la vulnerabilità CVE-2022-24735 nell'ambiente di esecuzione degli script Lua, che consentiva l'inserimento di codice Lua personalizzato ed il suo esecuzione nel contesto di un altro utente, incluso chi possedeva privilegi più elevati.
  • È stata corretta la vulnerabilità CVE-2022-24736, che permetteva di causare la terminazione anomala del processo redis-server a causa della dereferenziazione di un puntatore nullo. L'attacco viene effettuato tramite il caricamento di script Lua appositamente formattati.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster