Desde Linux Darkcrizt  

Valkey 8.1: la bifurcación de Redis presenta mejoras de rendimiento, memoria y nuevos módulos

Valkey

Se ha dado a conocer la liberación de la nueva versión de «Valkey 8.1», una bifurcación de Redis que nació tras la transición de este a una licencia propietaria, y que busca mantener la filosofía abierta del proyecto original.

Valkey 8.1 presenta una gran cantidad de mejoras y cambios, los cuales su principal enfoque está en las optimizaciones de rendimiento que reducen la latencia, aumentan la eficiencia en memoria y nuevas capacidades modulares.

Principales novedades de Valkey 8.1

Uno de los cambios más significativos en esta versión es la reescritura completa de la tabla hash, utilizada tanto en el almacenamiento de datos clave-valor como en los tipos de datos estructurados como Hash, Set y Sorted Set. Gracias a este rediseño, se ha logrado una reducción en el uso de memoria: 20 bytes menos por cada clave sin TTL, y hasta 30 bytes si la clave tiene un tiempo de vida definido. Además, la disminución de accesos aleatorios a memoria ha permitido mejorar el rendimiento en un 10% en entornos de E/S monohilo.

Otra de las novedades que presenta Valkey 8.1, es que la iteración sobre claves en operaciones como el comando KEYS o la transferencia de claves entre nodos en un clúster ahora cuenta con un sistema de precarga en caché, que permite tener la siguiente clave disponible antes de que se inicie su procesamiento. Este enfoque ha multiplicado por 3,5 la velocidad de búsqueda de claves, al aprovechar mejor la caché del procesador.

Entrada/salida multiproceso y mejoras en TLS

Valkey continúa su transición hacia un modelo de entrada/salida multihilo. Ahora, el procesamiento de conexiones TLS se realiza en flujos independientes, lo que ha triplicado la capacidad de aceptar nuevas conexiones. También se han aislado funciones como SSL_pending() y ERR_clear_error() en hilos separados, obteniendo como resultado un incremento del 10% en el rendimiento de operaciones SET y del 22% en operaciones GET.

Se ha mejorado la replicación, especialmente en entornos con TLS activo, eliminando operaciones redundantes como sumas de comprobación innecesarias. Esto ha derivado en una mejora del 18% en la sincronización completa durante la replicación sin disco y una reducción del 47% en el coste de las operaciones de copia y escritura.

Optimizaciones en conjuntos ordenados y tipos probabilísticos

El comando ZRANK para conjuntos ordenados ha sido optimizado y ahora es un 45% más rápido, mientras que ZADD ha adoptado instrucciones SIMD para lograr mayor eficiencia. En cuanto a los tipos de datos probabilísticos, el uso de HyperLogLog ha sido mejorado para utilizar solo 12 KB de memoria fija, y el uso de instrucciones AVX2 ha permitido multiplicar el rendimiento de las operaciones PFMERGE y PFCOUNT hasta por 12 veces, y las de BITCOUNT hasta por 5 veces.

Desfragmentación activa sin interrupciones y más control sobre registros

El sistema de desfragmentación activa también ha sido mejorado para evitar bloqueos o retrasos. Ahora, cada ciclo de desfragmentación dura solo 500 microsegundos, y se ha implementado una estrategia anti-inanición que impide que estas tareas se posterguen por operaciones de larga duración.

Se han introducido nuevas opciones de configuración para formateo de registros, incluyendo formatos de tiempo personalizados y un nuevo modo COMMANDLOG que registra solicitudes y respuestas extensas. Además, el comando LATENCY LATEST ha sido ampliado con nuevas métricas, ofreciendo más visibilidad sobre los picos y volumen de latencias registradas.

Nuevas funciones, módulos y soporte

Valkey ahora permite ejecutar la operación SET IFEQ, que condiciona la escritura de una clave al valor actual. También se introduce el soporte modular para motores de scripts, abriendo la posibilidad de usar lenguajes alternativos a Lua a través de módulos personalizados.

En esta versión también debutan varios módulos:

  • Search Module (Google): motor de búsqueda por similitud vectorial, ideal para casos de aprendizaje automático que exigen baja latencia y alto rendimiento.
  • JSON Module (AWS): permite manipular directamente fragmentos de documentos JSON, evitando el procesamiento completo del contenido en el cliente.
  • Bloom Filter Module (AWS): implementación de filtros Bloom, útiles para determinar la posible pertenencia de un elemento a un conjunto, con eficiencia probabilística

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.