Back

Cómo funcionan las bases de datos clave-valor (p. ej., Redis, Memcached)

Cómo funcionan las bases de datos clave-valor (p. ej., Redis, Memcached)

Tu aplicación frontend se siente rápida. Los usuarios hacen clic, los datos aparecen, las páginas cargan instantáneamente. Detrás de esa experiencia, a menudo hay una base de datos clave-valor haciendo el trabajo pesado — interceptando solicitudes antes de que lleguen a tu base de datos principal. Comprender cómo funcionan estos sistemas te ayuda a tomar decisiones más inteligentes sobre caché, sesiones y arquitectura backend.

Puntos clave

  • Las bases de datos clave-valor almacenan y recuperan datos usando una clave única emparejada con un valor, sacrificando flexibilidad de consultas por velocidad excepcional.
  • El almacenamiento en memoria (RAM) permite búsquedas en tiempo constante mediante tablas hash, a menudo 100–1000 veces más rápidas que las lecturas desde disco.
  • Redis ofrece estructuras de datos enriquecidas, persistencia opcional y clustering integrado, mientras que Memcached destaca como una caché simple, multi-hilo y diseñada específicamente para ese propósito.
  • Los casos de uso comunes incluyen gestión de sesiones, caché de respuestas de API y limitación de tasa — todos escenarios donde la baja latencia es lo más importante.
  • Los almacenes clave-valor complementan las bases de datos relacionales en lugar de reemplazarlas. Úsalos como una capa de rendimiento, no como almacén de datos principal.

¿Qué es una base de datos clave-valor?

Una base de datos clave-valor es un tipo de almacén de datos NoSQL que guarda y recupera datos usando una estructura simple de dos partes: una clave única y su valor asociado.

Piensa en ello como un objeto JavaScript o un mapa hash:

"session:user:4821" → { userId: 4821, role: "admin", expires: 1720000000 }
"product:sku:9001"  → { name: "Wireless Keyboard", price: 49.99 }

Buscas datos por clave. Eso es todo. No hay lenguaje de consultas, no hay JOINs, no hay esquema. Esta restricción es exactamente lo que hace que los almacenes clave-valor sean tan rápidos.

Cómo el almacenamiento en memoria hace las búsquedas rápidas

La mayoría de las bases de datos clave-valor — incluyendo Redis y Memcached — almacenan datos en RAM, no en disco. Las lecturas desde disco se miden en milisegundos. Las lecturas desde memoria ocurren en microsegundos, a menudo 100–1000 veces más rápidas.

Internamente, estos sistemas usan una tabla hash: la clave se hashea a una dirección de memoria, y el valor se recupera directamente. No hay escaneo, no hay indexación, no hay planificación de consultas. El tiempo de búsqueda es efectivamente O(1) — constante independientemente del tamaño del conjunto de datos.

Por esto los almacenes clave-valor son la opción predeterminada para capas de caché, almacenamiento de sesiones y cualquier servicio backend donde el tiempo de respuesta afecta directamente la experiencia del usuario.

Operaciones básicas: SET, GET y expiración

Las operaciones fundamentales son mínimas por diseño:

  • SET key value — almacenar un valor
  • GET key — recuperar un valor
  • DEL key — eliminar un valor
  • EXPIRE key seconds — auto-eliminar después de un tiempo de vida (TTL)

El TTL es especialmente útil para el caché. Almacenas una respuesta de API o un fragmento HTML renderizado con una expiración de 60 segundos. Tu aplicación lee primero desde el caché. Si la clave falta o expiró, recurre a la base de datos y repuebla el caché. Este patrón — cache-aside — es uno de los patrones más comunes en arquitectura web.

Redis vs. Memcached: diferencias arquitectónicas clave

Ambos son almacenes clave-valor en memoria. Ambos ofrecen rendimiento submilisegundo. Pero hacen diferentes compromisos.

CaracterísticaRedisMemcached
Tipos de datosStrings, listas, conjuntos, hashes, conjuntos ordenados, streams y másSolo strings
Límite de tamaño de valorHasta 512 MBHasta 1 MB
PersistenciaOpcional (snapshots RDB o archivo append-only)Ninguna — puramente volátil
Multi-threadingEvent loop de un solo hilo (threading I/O añadido en 6.0+)Completamente multi-hilo
Recuperación de memoriaDevuelve memoria liberada al SORetiene memoria asignada mediante slab allocator hasta reinicio
Clustering integradoSí (Redis Cluster, Sentinel)Requiere sharding del lado del cliente

Memcached es una caché diseñada específicamente para ese propósito. Es simple, rápida y predecible. Su asignador de memoria basado en slabs mantiene la fragmentación baja, haciendo el uso de memoria altamente consistente — útil cuando necesitas un límite estricto de memoria. Es una opción sólida cuando estás cacheando strings simples y no quieres nada más.

Redis es un almacén de estructuras de datos en memoria más amplio. Más allá del caché, soporta conjuntos ordenados para tablas de clasificación, mensajería pub/sub, contadores atómicos y persistencia opcional. Redis moderno se usa como caché, almacén de sesiones, broker de mensajes y base de datos ligera — a veces todo a la vez. Vale la pena mencionar: la licencia de Redis cambió a partir de 2024, lo que llevó a algunos equipos a evaluar Valkey, un fork de código abierto compatible mantenido bajo una licencia permisiva por la Linux Foundation.

Dónde encajan las bases de datos clave-valor en sistemas orientados al frontend

Desde la perspectiva de un desarrollador frontend, el almacenamiento clave-valor típicamente aparece en tres lugares:

  • Gestión de sesiones — almacenar tokens de autenticación, estado de usuario y preferencias del lado del servidor
  • Caché de respuestas de API — reducir la carga de la base de datos y acelerar solicitudes repetidas
  • Limitación de tasa — rastrear conteos de solicitudes por usuario o IP usando operaciones de incremento atómico

Cada uno de estos se beneficia directamente de lo que las bases de datos clave-valor hacen mejor: lecturas rápidas, escrituras rápidas y lógica de expiración simple.

Cuándo no usar un almacén clave-valor

Las bases de datos clave-valor no son un reemplazo para las bases de datos relacionales. Tienen limitaciones reales:

  • La mayoría de las consultas están basadas en claves, con soporte limitado para filtrado u ordenamiento comparado con bases de datos relacionales.
  • No hay relaciones integradas entre registros
  • No son adecuadas para reportes complejos o analítica
  • El modelado de datos requiere un diseño cuidadoso de claves desde el principio

Si tus datos tienen relaciones o necesitan consultas flexibles, opta por PostgreSQL o una base de datos de documentos. Usa el almacenamiento clave-valor como una capa de rendimiento sobre tu almacén de datos principal, no como un sustituto.

Conclusión

Las bases de datos clave-valor funcionan porque intercambian complejidad por velocidad. Hacen una cosa — almacenar y recuperar valores por clave, principalmente en memoria — y lo hacen excepcionalmente bien. Ya sea que elijas Redis por su flexibilidad o Memcached por su simplicidad, comprender el modelo subyacente te ayuda a usar estas herramientas donde realmente pertenecen: como una capa rápida y enfocada que mantiene tus aplicaciones responsivas.

Preguntas frecuentes

Redis soporta dos mecanismos de persistencia opcionales: snapshots RDB, que guardan el conjunto de datos en intervalos configurados, y el archivo append-only (AOF), que registra cada operación de escritura. Puedes usar uno o ambos. Sin persistencia habilitada, los datos se pierden al reiniciar, igual que Memcached. Para caché puro, la persistencia a menudo es innecesaria.

Memcached es una buena opción cuando necesitas una caché directa y multi-hilo para valores de string simples y quieres uso de memoria predecible con configuración mínima. Si no necesitas estructuras de datos enriquecidas, persistencia o clustering integrado, la simplicidad de Memcached y su eficiente asignador de memoria basado en slabs lo convierten en una opción confiable y ligera.

Tanto Redis como Memcached usan políticas de desalojo para manejar límites de memoria. Memcached usa desalojo LRU (menos recientemente usado) por defecto. Redis ofrece varias políticas configurables, incluyendo LRU, LFU (menos frecuentemente usado), desalojo aleatorio y modo sin desalojo, que devuelve errores en escrituras cuando la memoria está llena.

Redis puede funcionar como almacén de datos principal para casos de uso específicos como gestión de sesiones, contadores o tablas de clasificación en tiempo real, especialmente con persistencia habilitada. Sin embargo, carece de consultas relacionales, esquemas forzados y soporte de transacciones maduro. Para la mayoría de aplicaciones, funciona mejor como una capa de rendimiento complementaria junto a una base de datos relacional o de documentos.

Gain control over your UX

See how users are using your site as if you were sitting next to them, learn and iterate faster with OpenReplay. — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay