È stato pubblicato il rilascio del DBMS Redis 8.2, classificabile come sistema 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 insiemi, oltre alla possibilità di eseguire script di elaborazione in linguaggio Lua sul lato server. Il codice del progetto è scritto in linguaggio C e distribuito con licenza AGPLv3.
Il DBMS Redis supporta le transazioni, permettendo di eseguire in un'unica azione un gruppo di comandi, garantendo coerenza e sequenzialità (i comandi di altre richieste non possono intervenire) nell'esecuzione dell'insieme di comandi specificato, e in caso di problemi consente il rollback delle modifiche. Tutti i dati vengono completamente memorizzati nella RAM. Le librerie client sono disponibili per la maggior parte dei linguaggi di programmazione più popolari, tra cui Perl, Python, PHP, Java, Ruby e Tcl.
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 principali in Redis 8.2:
- È stata ottimizzata oltre 70 comandi, che ora funzionano più velocemente rispetto a Redis 8.0. Ad esempio, il comando BITCOUNT è diventato più veloce del 35%, mentre i comandi per le operazioni con le liste LINSERT, LREM e LPOS sono ora più veloci del 25%. 17 dei comandi ottimizzati sono diventati più rapidi di almeno il 5%, e 52 di almeno il 2%.

- Sono state effettuate ottimizzazioni nel codice di gestione delle operazioni simultanee e dell'input/output multithreading, che hanno permesso un incremento del 49% nel numero di operazioni elaborabili al secondo nei test con 8 thread di input/output, con una distribuzione del carico del 20% di richieste di scrittura e 80% di richieste di lettura. Su uno server si è riusciti a superare la soglia di 1 milione di operazioni elaborabili al secondo.

- È stato modificato il metodo di memorizzazione dei dati in formato chiave/valore: ora viene utilizzata una struttura unificata kvobj per memorizzare il nome della chiave, un valore breve e il tempo di vita in un unico blocco di memoria allocata, evitando di avere riferimenti separati per chiavi, dati e TTL. Quando si memorizzano brevi valori stringa, il nuovo metodo ha permesso di ridurre il consumo di memoria del 25-37%.

- È stata ottimizzata la memorizzazione dei dati in formato JSON, con una riduzione del consumo di memoria dal 25% al 67% per la memorizzazione di numeri interi e numeri in virgola mobile.
- Nel meccanismo Streams, utilizzato per la gestione e la memorizzazione dei flussi di messaggi, sono stati aggiunti nuovi comandi XACKDEL e XDELEX, che semplificano il lavoro con i flussi a cui si sono collegati più destinatari (gruppi di consumatori). Questi comandi affrontano il problema di rimuovere un messaggio solo dopo che tutti i gestori hanno confermato il suo ricevimento.
- Nella command BITOP, destinata all'esecuzione di operazioni bitwise, sono stati aggiunti nuovi operatori logici DIFF, DIFF1, ANDOR e ONE.
- È stato aggiunto un nuovo tipo di indici vettoriali SVS-VAMANA, che supporta la compressione dei vettori.
- Aggiunte nuove metriche: carico per singoli slot e distribuzione delle dimensioni delle chiavi per i tipi di dati di base.
Fonte: opennet.ru



