Zademy

Redis, Valkey y DragonflyDB: Guía moderna de bases de datos en memoria

Databases
Redis
words palabras

Las bases de datos en memoria ya son infraestructura básica. Las usas como caché, como cola de mensajes ligera, para sesiones, para series temporales y hasta para búsqueda vectorial. Si construyes algo serio, probablemente ya tienes una corriendo.

El cambio de licencia de Redis en 2024 abrió la puerta a dos alternativas serias: Valkey y DragonflyDB. Las dos hablan el mismo protocolo que Redis, pero se diferencian en rendimiento, licenciamiento y cómo usan el hardware.

Veamos qué ofrece cada una y cómo integrarlas con Spring Boot sin cambiar tu forma de programar.

Redis: el estándar

Redis lleva más de una década siendo el estándar de facto en bases de datos en memoria. Desde side projects hasta plataformas con tráfico enorme.

Su núcleo sigue siendo monohilo para garantizar operaciones atómicas simples, aunque las versiones recientes añadieron hilos auxiliares para E/S y tareas de background.

Redis 8.0 integra de forma nativa lo que antes era Redis Stack: JSON, series temporales y búsqueda vectorial (Vector Sets). En cuanto a licencia, ahora usa un modelo triple: RSALv2, SSPLv1 o AGPLv3. Ya no es open source aprobado por la OSI, así que hay que revisar con cuidado su uso en productos comerciales o servicios administrados.

Redis sigue siendo la opción cuando necesitas un ecosistema maduro con clientes en casi cualquier lenguaje, soporte empresarial oficial y módulos avanzados.

Valkey: el fork que se quedó abierto

Valkey nació como fork de la última versión de Redis con licencia BSD (7.2.4). Lo impulsa la comunidad, lo respalda la Linux Foundation, y AWS y Google están detrás.

El objetivo es directo: ofrecer un Redis completamente abierto, compatible en comandos y protocolo, pero con mejoras internas.

Se mantiene bajo licencia BSD, alineada con la definición de open source de la OSI. Rediseñó su tabla hash interna para ser más amigable con la caché de CPU, reduciendo el uso de memoria en unos 20 bytes por par clave-valor. Valkey 9.0 introduce migración atómica de slots, que permite reequilibrar datos en clúster hasta 9 veces más rápido sin errores visibles para el cliente.

Valkey es atractivo cuando vienes de Redis y quieres compatibilidad casi total, necesitas seguir en open source y buscas reducir costos en la nube.

DragonflyDB: diseñado para la nube

DragonflyDB no es un fork de Redis. Es un motor nuevo, diseñado desde cero para exprimir el hardware moderno con múltiples núcleos.

Usa un diseño shared-nothing donde cada hilo gestiona su propio shard de datos. Esto reduce cuellos de botella y permite escalar verticalmente de forma agresiva en una sola máquina. Su estructura interna, la Dashtable, puede ahorrar entre 30% y 60% de memoria respecto a Redis, dependiendo del patrón de claves. En muchos escenarios reporta ser hasta 25x más rápido que un despliegue clásico de Redis, especialmente en cargas intensivas de lectura y escritura.

La licencia es BSL (Business Source License). Es gratuita en muchos escenarios, pero no es OSI y tiene restricciones para servicios competidores.

DragonflyDB brilla cuando manejas terabytes de datos en memoria, necesitas millones de operaciones por segundo en un solo nodo, o buscas reducir el número de instancias para soportar tu carga.

Cómo se comparan

Lo concreto: Redis tiene el ecosistema más maduro, con la mayor cantidad de clientes y herramientas. Valkey crece rápido y es prácticamente compatible con todo lo de Redis. DragonflyDB es más joven, pero con un foco fuerte en alto rendimiento.

En licencias, Redis ya no es OSI (RSALv2, SSPLv1 o AGPLv3). Valkey es BSD, open source de verdad. DragonflyDB es BSL, gratuita con restricciones.

En threading, Redis es monohilo con E/S multihilo. Valkey es monohilo con E/S asíncrona mejorada. DragonflyDB es multihilo real con diseño shared-nothing.

En memoria, Redis es eficiente pero limitado por su diseño original. Valkey ahorra unos 20 bytes por clave-valor. DragonflyDB ahorra 30-60% frente a Redis en muchos casos.

Integración con Spring Boot

La gran ventaja es que los tres hablan el mismo protocolo. Desde Spring Boot la integración es prácticamente idéntica.

En tu pom.xml basta con la dependencia estándar:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Y en application.properties (o application.yml) solo apuntas al host adecuado:

# Funciona igual para Redis, Valkey y DragonflyDB
spring.data.redis.host=localhost
spring.data.redis.port=6379

Un servicio de caché sencillo se ve exactamente igual para los tres:

@Service
public class CacheService {

    @Autowired
    private StringRedisTemplate redisTemplate;

    public void guardarDato(String llave, String valor) {
        // Operación atómica en Redis, Valkey y DragonflyDB
        redisTemplate.opsForValue().set(llave, valor);
    }
}

Mientras tu cliente use el protocolo de Redis, cambiar de uno a otro suele ser cuestión de apuntar a otra URL y ajustar parámetros de despliegue.

Cuál elegir

Piensa en tres ejes. Primero, licenciamiento: si tu organización exige open source aprobado por OSI, Valkey es la opción. Si ya tienes acuerdos con Redis, puede seguir siendo lo más cómodo. Si buscas máximo rendimiento y aceptas BSL, DragonflyDB es muy atractivo.

Segundo, patrón de carga: para cargas moderadas, Redis sigue siendo suficiente. Si el costo por GB en memoria es crítico, Valkey y DragonflyDB pueden reducir la factura. Para cargas extremas en un solo nodo, DragonflyDB suele ser el candidato.

Tercero, estrategia de nube: verifica qué servicios administrados ofrece tu proveedor para cada motor y calcula el costo total: instancias, soporte, almacenamiento y tráfico.