Comunidad Valkey anunció el lanzamiento Valkey 9.1 — de una nueva versión estable de un almacén de datos de alto rendimiento de tipo 'clave-valor' de código abierto (licencia BSD), que admite varios casos de uso, como almacenamiento en caché y colas de mensajes, y también puede funcionar como base de datos principal. El proyecto es respaldado por la Fundación Linux, lo que garantiza su disponibilidad continua como código abierto.
El proyecto es un fork de Redis y fue creado después de cambios en su licencia.
Esta versión incluye nuevas funciones, mejoras en seguridad, monitoreo, rendimiento y eficiencia de las herramientas. Más de 80 personas participaron en la preparación del lanzamiento.
Principales cambios
Lua ha sido extraído a un módulo separado.
En Valkey 9.1, el motor de scripts Lua se separó del servidor principal y se trasladó a un módulo independiente. Esta separación reduce la superficie de ataque del núcleo de Valkey y permite a los administradores desactivar completamente Lua en caso de que no se utilicen scripts. Para facilitar la comprensión de qué motores de scripts están cargados en el sistema, el comando INFO recibió una nueva sección en la respuesta — Motores de Scripts.Nuevas correcciones de seguridad.
La versión estable 9.1.0 incluye correcciones para tres vulnerabilidades: use-after-free en el mecanismo de desbloqueo del cliente, acceso incorrecto a la memoria en el comando 7RESTORE, así como use-after-free durante la sincronización completa mientras se ejecuta código Lua/function con cesión de ejecución. En las notas se mencionan como CVE-2026-23479, CVE-2026-25243 y CVE-2026-23631.ACL a nivel de base de datos.
Se ha añadido un sistema de control de acceso a nivel de bases de datos individuales. Esto permite una división más precisa de los derechos en configuraciones multijugador y no se limita solo a reglas de acceso global a nivel de toda la instancia de Valkey.Reinicio automático de TLS-certificados.
Valkey 9.1 ha recibido soporte para el reinicio automático de certificados TLS. Para los administradores, esto significa menos operaciones manuales al rotar certificados y una gestión más conveniente de instalaciones protegidas.Nuevo comando HGETDEL.
El comando obtiene y elimina atómicamente uno o varios campos de una estructura hash. El sentido práctico es para escenarios como colas o consumo único de datos, donde antes se necesitaba combinar HGET y HDEL a través de una transacción.Nuevo comando MSETEX.
MSETEX permite establecer varios claves con un tiempo de vida común con un solo comando. Anteriormente, para este escenario se requerían múltiples llamadas a SETEX o una combinación de SET y EXPIRE a través de un pipeline. El nuevo comando reduce el número de llamadas y simplifica el código típico para datos de sesión y temporales.Nuevo comando CLUSTERSCAN.
En los clústeres se ha introducido un comando único para escanear claves en todos los nodos. Antes, los clientes debían realizar SCAN en cada nodo y combinar los resultados. CLUSTERSCAN simplifica las bibliotecas cliente, herramientas administrativas y tareas operativas como la búsqueda de claves por patrón o tipo en todo el clúster.Optimización del consumo de memoria por cadenas.
Gracias a optimizaciones internas de punteros para cadenas de menos de 128 bytes, se ha declarado una reducción del consumo de memoria de hasta el 20%. Esto es especialmente importante para cargas de trabajo de caché típicas, donde se almacena una gran cantidad de valores pequeños.Menos memoria para conjuntos ordenados.
Las optimizaciones en las estructuras skiplist reducen el gasto de memoria para conjuntos ordenados hasta un 10%. Además, se han acelerado las operaciones en conjuntos ordenados, incluidas consultas como ZRANGEBYSCORE y ZRANGEBYLEX.Trabajo acelerado con rehashing.
La redistribución interna de tablas hash, que se manifiesta a menudo al crecer el espacio de claves, se ha optimizado para reducir las latencias. Las notas de la versión también mencionan la reducción de picos de latencia gracias a la liberación incremental de páginas.Modelo de I/O threading mejorado.
En la versión candidata 9.1.0-rc2 se reestructuró el modelo de interacción de los hilos de entrada/salida utilizando colas sin bloqueo. En las notas se indica un aumento de capacidad de entre el 8% y el 17%.Aceleración de GET y SET.
Valkey ahora utiliza por defecto relojes de hardware donde es posible, lo que reduce la sobrecarga de las llamadas al sistema relacionadas con el tiempo. El proyecto declara un aumento del rendimiento de GET y SET de hasta el 3% en general.Eliminaciones masivas más rápidas.
En operaciones como SREM, ZREM y HDEL, Valkey ahora suspenda temporalmente el cambio de tamaño interno de las tablas hash para evitar rehashing innecesario y acelerar la eliminación masiva de elementos.Creación de réplicas más eficiente en AOF.
Al crear una réplica con AOF habilitado, ahora se reutiliza el archivo RDB recibido en lugar de generar una nueva instantánea para el archivo base AOF inicial. Esto debería reducir la carga innecesaria al desplegar réplicas.Mejoras en valkey-cli y valkey-benchmark.
Se agregó soporte para migración de ranuras atómicas en valkey-cli a través del parámetro —cluster-use-atomic-slot-migration para las operaciones —cluster rebalance y —cluster reshard. También se añadió la salida de distribución de RPS en valkey-benchmark, así como los parámetros —warmup y —duration, lo que hace que las pruebas de rendimiento sean más controlables.
Separadamente junto con Valkey 9.1 en el ecosistema se promueven proyectos relacionados: Valkey Admin para la gestión visual de clústeres, Valkey Search 1.2 con búsqueda de texto completo, filtros numéricos, etiquetas y búsqueda vectorial, así como la biblioteca cliente Valkey GLIDE.
Valkey 9.1 es una actualización significativa en términos de operación: menos memoria en estructuras típicas, menos latencias durante reestructuraciones internas, nuevos comandos para clústeres y datos temporales, así como un modelo de seguridad más preciso para instalaciones en producción.
Fuente: linux.org.ru
