Valkey 8.1: il fork di Redis offre prestazioni, miglioramenti della memoria e nuovi moduli

Valkey

È stato annunciato rilascio della nuova versione di «Valkey 8.1», un fork di Redis nato dopo il passaggio a una licenza proprietaria e che cerca di mantenere la filosofia aperta del progetto originale.

Valkey 8.1 Presenta un gran numero di miglioramenti e modifiche, il cui obiettivo principale è l'ottimizzazione delle prestazioni che riduce la latenza, aumenta l'efficienza della memoria e introduce nuove capacità modulari.

Nuove funzionalità chiave in Valkey 8.1

Uno dei cambiamenti più significativi in questa versione è il riscrittura completa della tabella hash, utilizzato sia nell'archiviazione di dati chiave-valore sia in tipi di dati strutturati quali Hash, Set e Sorted Set. Grazie a questa riprogettazione, È stata ottenuta una riduzione dell'utilizzo della memoria: 20 byte in meno per chiave senza TTL, e fino a 30 byte se la chiave ha una durata definita. Inoltre, la riduzione dell'accesso casuale alla memoria ha portato a un miglioramento delle prestazioni del 10% negli ambienti I/O single-threaded.

Un'altra nuova funzionalità di Valkey 8.1 è l'iterazione sulle chiavi in ​​operazioni come il comando KEYS o Il trasferimento delle chiavi tra i nodi di un cluster ora dispone di un sistema di precaricamento della cache, che consente di avere a disposizione la chiave successiva prima che inizi l'elaborazione. Questo approccio ha aumentato la velocità di ricerca delle chiavi di 3,5 volte sfruttando meglio la cache del processore.

Miglioramenti di I/O multi-thread e TLS

Valkey continua la transizione verso un modello I/O multi-thread. Ora, il L'elaborazione della connessione TLS viene eseguita in flussi separati, che ha triplicato la capacità di accettare nuove connessioni. Anche funzioni come SSL_pending() e ERR_clear_error() sono state isolate in thread separati, con un conseguente aumento delle prestazioni del 10% per le operazioni SET e del 22% per le operazioni GET.

La replicazione è stata migliorata, soprattutto in ambienti con TLS attivo, eliminando operazioni ridondanti come checksum non necessari. Ciò ha comportato un miglioramento del 18% nella sincronizzazione completa durante la replicazione senza disco e una riduzione del 47% nei costi delle operazioni di copia e scrittura.

Ottimizzazioni su insiemi ordinati e tipi probabilistici

El Comando ZRANK per i set ordinati è stato ottimizzato e Ora è più veloce del 45%, mentre ZADD ha adottato le istruzioni SIMD per raggiungere una maggiore efficienza. Per i tipi di dati probabilistici, l'uso di HyperLogLog è stato migliorato per utilizzare solo 12 KB di memoria fissa e l'uso delle istruzioni AVX2 ha consentito di moltiplicare le prestazioni delle operazioni PFMERGE e PFCOUNT fino a 12 volte e quelle di BITCOUNT fino a 5 volte.

Deframmentazione attiva ininterrotta e maggiore controllo sui registri

El è stato migliorato anche il sistema di deframmentazione attiva per evitare blocchi o ritardi. Ora, ogni ciclo di deframmentazione dura solo 500 microsecondi, ed è stata implementata una strategia anti-fame per evitare che questi compiti vengano rinviati a causa di operazioni a lungo termine.

Sono stati introdotti Nuove opzioni di configurazione per la formattazione dei record, inclusi formati di ora personalizzati e una nuova modalità COMMANDLOG che registra richieste e risposte lunghe. Inoltre, il comando LATENCY LATEST è stato ampliato con nuove metriche, offrendo una maggiore visibilità sulle latenze di picco e di volume registrate.

Nuove funzionalità, moduli e supporto

Valkey ora consente di eseguire l'operazione SET IFEQ, che condiziona la scrittura di una chiave al valore corrente. Anche Viene introdotto il supporto modulare per i motori di script, aprendo la possibilità di utilizzare linguaggi alternativi a Lua tramite moduli personalizzati.

Anche in questa versione diversi moduli debuttano:

  • Modulo di ricerca (Google): Motore di ricerca per similarità vettoriale, ideale per casi di apprendimento automatico che richiedono bassa latenza e alta produttività.
  • Modulo JSON (AWS): consente la manipolazione diretta di frammenti di documenti JSON, evitando l'elaborazione completa del contenuto sul client.
  • Modulo filtro Bloom (AWS): Implementazione di filtri di Bloom, utili per determinare la possibile appartenenza di un elemento ad un insieme, con efficienza probabilistica

Infine, se sei interessato a saperne di più, puoi consultare i dettagli nella sezione seguente link