Valkey cumple 1 año: cómo el fork comunitario superó a Redis
(gomomento.com)- Redis Inc sacudió la confianza de la comunidad con su decisión de cerrar el código fuente (cambio a SSPL), pero la comunidad de desarrolladores se unió en torno al fork Valkey, impulsando una innovación activa y contribuciones continuas
- Redis 8.0 volvió a ser open source, y el fundador Antirez regresó para participar en nuevas funciones y optimizaciones, por lo que ambos bandos están avanzando con rapidez
- Según los benchmarks más recientes, Valkey 8.1.1 en un entorno de 8 vCPU ofrece un rendimiento de SET 37% superior al de Redis 8.0, y también registró una latencia p99 más baja (GET también aventaja en 16%)
- Con técnicas de ajuste en producción como hilos de IO y fijación de núcleos, Valkey logró aumentar más de 3 veces el throughput en entornos multihilo y minimizar la latencia
- También se comparten benchmarks más cercanos a entornos reales y recomendaciones de tuning, junto con advertencias para interpretar los resultados y aplicarlos en operación real
El cierre del código de Redis y la aparición de Valkey
- Hace un año, Redis Inc (antes Garantia Data) deterioró su relación de confianza con la comunidad al cambiar su licencia open source (adopción de SSPL)
- Como respuesta surgió el fork abierto Valkey, que se ha convertido en un activo tecnológico ampliamente usado en sistemas distribuidos, caché y procesamiento de datos en tiempo real
- Posteriormente, Redis también intentó recuperar la confianza con el regreso de Antirez (fundador), mejoras de rendimiento y funciones, y el retorno de Redis 8.0 al modelo open source
Valkey 8.1 vs Redis 8.0: comparación de rendimiento
- Benchmark de SET en las mismas condiciones: instancia AWS c8g.2xl de 8 vCPU, ítems de 1 KB, keyspace de 3 M y 500 conexiones
- Valkey 8.1.1: 999.8K RPS (p99 0.8ms)
- Redis 8.0: 729.4K RPS (p99 0.99ms)
- Valkey es 37% más rápido en SET y 16% en GET; además, el p99 de SET es 30% mejor y el de GET 60% mejor
- Al usar 6 hilos de IO, Valkey pasó de 239K → 678K RPS (2.8x↑), y p99 de 1.68ms → 0.93ms (44%↓)
- Redis también mejoró con hilos de IO: 235K → 563K RPS, p99 de 1.35ms → 0.84ms (40%↓)
Efecto del ajuste de multihilo y núcleos
- Los hilos de IO muestran un efecto importante a partir de 3 hilos, y Valkey amplía su ventaja sobre Redis a partir de 4 hilos
- Si se limitan los núcleos de IRQ (interrupciones) a 2 y luego Redis/Valkey se fijan a los 6 núcleos restantes (pinning), se obtiene una mejora adicional de rendimiento
- Valkey: 832K → 999.8K RPS (pinning de núcleo/IRQ, uso de CPU al 80%)
- Separar los núcleos de IRQ y de la aplicación mejora la eficiencia de caché y minimiza la tail latency
- También se incluye un ejemplo real con Docker usando
cpuset-cpus,--io-threads, etc.
Reproducción del benchmark y consejos prácticos
- Uso de instancias AWS Graviton4 (c8g.2xlarge) de última generación y cluster placement group
- Máximo rendimiento mediante core pinning / separación de IRQ / ajuste del número de conexiones (en el rango de 400 a 500)
- También es necesario ajustar el keyspace y el tamaño de los ítems; valores y keyspaces pequeños aumentan la tasa de aciertos de caché L3
- Se recomienda usar activamente herramientas de benchmark multihilo como valkey-benchmark o rpc-perf (herramienta en Rust más cercana al uso real)
docker run --network="host" --rm --cpuset-cpus="2-7" \ valkey/valkey:8.0.1 valkey-benchmark \ -h 172.31.4.92 -p 6379 -t SET,GET -n 100000000 -c 256 \ -r 3000000 --threads 6 -d 1024
Límites y consideraciones al medir rendimiento
-
Los resultados de benchmark pueden diferir del entorno real de operación
- Las cargas reales incluyen factores complejos como mezcla de SET:GET, variación de carga, objetivos de TPS y latencia de red
- Cuando el número de conexiones aumenta bruscamente, también se observa mayor latencia de cola, menor throughput y aumento de la tail latency
- Los resultados pueden variar considerablemente según la herramienta/opciones de benchmark y la topología de red
Principales avances y desarrollo de la comunidad
El proyecto Valkey ha mostrado un desarrollo muy activo en diversos frentes durante el último año
- Con la colaboración de muchos desarrolladores y empresas en GitHub y otros espacios, se añadieron funciones, se corrigieron bugs y se mejoró la seguridad
- También se reforzaron la documentación y el soporte a usuarios para reducir la barrera de entrada de nuevos usuarios
- En la gestión del proyecto se enfatizan la toma de decisiones transparente y la votación de la comunidad
Valor técnico y en la industria
Valkey tiene fortalezas como las siguientes
- Al poder ser usado por cualquiera sin restricciones de licencia, es una opción atractiva para proveedores de servicios cloud y empresas de servicios web a gran escala
- Tiene alta compatibilidad con Redis, por lo que la migración también es sencilla
- Al estar impulsado por la comunidad, puede reflejar diversos requisitos y mantener actualizaciones continuas con rapidez
Conclusión e implicaciones
- Valkey ha mostrado, a solo un año de nacer como fork de Redis, resultados que superan a Redis en tecnología, rendimiento y comunidad
- Las claves están en herramientas y técnicas de tuning reales como hilos de IO, separación de núcleo/IRQ y ajuste de conexiones
- El rendimiento no llega automáticamente; es indispensable una optimización continua ajustada al sistema, la carga de trabajo y la infraestructura
- En entornos de servicio reales, se necesita un enfoque práctico que no dependa solo de las cifras de benchmark, sino que pruebe directamente distintos escenarios
4 comentarios
Aunque Redis tomó muchas malas decisiones, da pena que parezca que el oso hace el trabajo y el domador se lleva el dinero.
Publicado en el grupo de Facebook "Redis User Group"
Es un material que resume qué mejoras se realizaron en Valkey 8.
https://www.facebook.com/groups/rediskorea/posts/3927030954110001/
Si lo ven junto con el contenido de arriba, probablemente ayude a entenderlo.
En realidad, no es que Valkey haya hecho gran cosa... más bien, del otro lado se hundieron solos...
Opiniones en Hacker News
write(2)/read(2)pueden ser bastante lentas al volver del event loop, se introdujo una estructura donde justo en ese momento solo el I/O se procesa en paralelo con N threads en estado de zero contention, y luego se vuelve de inmediato al modo single-thread. Agradezco que el equipo de Valkey haya seguido desarrollando este sistema. Este sistema ya venía funcionando desde antes, y me incomoda que la prensa exagere datos que en la práctica no han cambiado. En realidad, estas funciones interesan más a usuarios empresariales o proveedores cloud como Amazon o Google que a la mayoría de los usuarios comunes de Redis. A menos que no haya otra opción que manejar una carga enorme o muchísimos usuarios al mismo tiempo, la realidad es que en la mayoría de los casos Redis tiene bajo uso de CPU, así que no hace falta activarlas. Últimamente, al desarrollar el tipo de dato vector set en Redis, se está tomando el threading como valor predeterminado, y también se está permitiendo que la escritura de vector sets mediante VADD se haga con threads. Estructuras de datos como HNSW introducen por primera vez en la historia de Redis tiempos constantes enormes, así que el espacio de diseño cambia por completo. Antes también ya se había implementado soporte de threads para módulos. La decisión de usar threads o no depende del contexto.