Guias

Redis vs Memcached: cuál elegir para tu aplicación en 2026

Redis vs Memcached: cuál elegir para tu aplicación en 2026

Redis y Memcached son las dos opciones más populares para cache in-memory. Esta guía te ayuda a elegir la correcta para tu caso.

—

TL;DR — Lo que vas a tener al final

  • Tiempo de setup: 30-60 minutos para las primeras VLANs.
  • Requisitos: Switch gestionable 802.1Q, NICs Ethernet.
  • Resultado: VLANs funcionales, failover en bonding, DHCP por VLAN.
  • Troubleshooting: ip link show, bridge vlan show, tcpdump -e -i eth0.

TL;DR

  • Usa Redis (90% de los casos): más features, persistencia, tipos de datos avanzados
  • Usa Memcached: solo si necesitas caché ultra-simple con máximo rendimiento de lectura/escritura de strings

—

¿Qué son?

Redis

Redis (Remote Dictionary Server) es un almacén de datos in-memory que soporta múltiples tipos de datos: strings, hashes, lists, sets, sorted sets, bitmaps, hyperloglogs, geospatial indexes. Tiene persistencia opcional en disco.

Memcached

Memcached es un sistema de caché distribuido in-memory. Solo soporta strings (binarios opacos). No tiene persistencia. Diseñado para ser simple y rápido.

—

Comparativa técnica

Feature Redis 7.x Memcached 1.6
Tipos de datos 9+ (string, hash, list, set, sorted set, …) Solo string
Persistencia Sí (RDB snapshots, AOF log) No
Replicación Sí (master-replica) No (solo cluster)
Cluster Sí (hash slots, 16384 nodos) Sí (hash consistente)
Pub/Sub Sí No
Lua scripting Sí No
Transacciones Sí (MULTI/EXEC) No
Streams Sí (Redis 5+) No
Memory limit Por config (maxmemory) Por defecto (RAM disponible)
Protocolo RESP (text + binary) Solo text
Throughput típico 100K-1M ops/seg 200K-2M ops/seg

—

¿Cuándo usar Redis?

1. Cache + estructura de datos compleja

Si necesitas cache que no son solo strings:

  • Sessions con objetos anidados
  • Leaderboards (sorted sets)
  • Contadores en tiempo real
  • Colas de tareas (lists)

2. Persistencia

Si quieres que el cache sobreviva a reinicios:

  • Configuración de aplicación cacheada
  • Resultados de queries costosas
  • Rate limiting persistente

3. Pub/Sub

Si necesitas mensajería en tiempo real:

  • Chat
  • Notificaciones
  • WebSockets

4. Lua scripting

Si necesitas operaciones atómicas complejas en el servidor.

5. Como base de datos

Redis puede ser DB principal para casos de baja latencia. Con RedisJSON, RedisGraph, RedisTimeSeries es más versátil que nunca.

—

¿Cuándo usar Memcached?

1. Cache HTTP de objetos simple

Si cacheas HTML responses, JSON serializado, o cualquier blob binario.

2. Multi-threaded por defecto

A diferencia de Redis (single-threaded para comandos, aunque Redis 6+ usa I/O threads para network), Memcached usa múltiples threads por defecto, lo cual ayuda en máquinas con muchos cores.

3. Cero administración

Memcached es super simple: install, run, forget. No requiere configurar persistencia, replicación, etc.

4. Cuando ya tienes Memcached en producción

Si tu sistema actual usa Memcached y funciona bien, no hay razón fuerte para migrar.

—

Benchmarks reales (2026)

Operaciones por segundo (single instance, AWS Graviton 4):

Operación Redis 7.4 Memcached 1.6
GET string 1KB 180K ops/s 350K ops/s
SET string 1KB 170K ops/s 320K ops/s
INCR counter 220K ops/s N/A
HGET hash 200K ops/s N/A
List push (LPUSH) 195K ops/s N/A

Memcached gana en velocidad pura para strings. Redis gana en variedad.

Memoria (mismo workload, mismo hardware):

  • Redis: ~85% eficiente (overhead de estructuras internas)
  • Memcached: ~95% eficiente (almacena strings opacos)

—

Instalación rápida

Redis

El paquete redis-server en Debian/Ubuntu es el server oficial mantenido por Redis Inc. Incluye redis-cli, redis-benchmark y las herramientas de diagnóstico. Habilitar el servicio lo deja arrancando en cada boot (enable), start lo arranca ahora; verificar con redis-cli ping te asegura que el protocolo RESP está vivo — si responde PONG, el server está aceptando conexiones en localhost:6379.


# Ubuntu/Debian
sudo apt install redis-server
# Habilitar y arrancar
sudo systemctl enable redis-server
sudo systemctl start redis-server
# Verificar
redis-cli ping
# PONG

Troubleshooting: si redis-cli ping se queda colgado o da Could not connect, el server probablemente no está escuchando en 127.0.0.1:6379. Revisa /etc/redis/redis.conf y verifica que la línea bind 127.0.0.1 ::1 esté descomentada (Redis 6+ viene con bind 127.0.0.1 -::1 * por defecto, lo cual lo expone a internet — peligro crítico). Si systemctl start falla con Job for redis-server.service failed because a configured resource limit was exceeded, suele ser un conflicto de puerto con otro Redis ya corriendo (ss -tlnp | grep 6379). Para producción, cambiá el supervised a systemd y configura requirepass con una contraseña fuerte — sin esto, cualquiera con acceso a localhost puede escribir en tu cache.

Memcached

memcached se distribuye como binario único en el paquete del mismo nombre. Por defecto escucha en localhost:11211 con 64 MB de RAM y todas las interfaces loopback. El protocolo es texto plano ASCII (stats, set, get, delete); puedes probarlo con nc o telnet sin instalar cliente adicional.


# Ubuntu/Debian
sudo apt install memcached
# Habilitar y arrancar
sudo systemctl enable memcached
sudo systemctl start memcached
# Probar
echo "stats" | nc localhost 11211

Troubleshooting: si echo "stats" | nc no devuelve nada, verifica que el puerto 11211 esté abierto en loopback con ss -tlnp | grep 11211. Memcached en Ubuntu/Debian por defecto escucha en 127.0.0.1 (configurado en /etc/memcached.conf), pero versiones viejas de la imagen Docker y algunas distros derivadas lo dejaban en 0.0.0.0 — esto es un riesgo de seguridad grave (hubo exploits remotos de amplificación en el pasado). Si necesitas ajustar memoria, modificá -m 256 en /etc/memcached.conf (en MB) y reiniciá. Si systemctl status muestra Address already in use, otro memcached está corriendo en ese puerto; matalo con pkill memcached o cambiá -p en la config.

—

Cómo migrar de Memcached a Redis (si decides hacerlo)

La mayoría de aplicaciones usan get/set que son compatibles. Si usas features avanzadas (TTL diferente por key, list ops, etc), necesitas refactor.

Python (con redis-py):


# Memcached
from pymemcache.client.base import Client
mc = Client(('localhost', 11211))
mc.set('key', 'value', expire=300)
# Redis (mismo API para get/set básico)
import redis
r = redis.Redis(host='localhost', port=6379)
r.set('key', 'value', ex=300)

—

Patrones comunes de uso

Redis: Session store


import redis
import json
r = redis.Redis(host='localhost', port=6379)
# Guardar sesión
session_id = 'user_123'
session_data = {'user_id': 123, 'role': 'admin', 'last_seen': '2026-08-02'}
r.setex(f'session:{session_id}', 3600, json.dumps(session_data))
# Recuperar sesión
session = json.loads(r.get(f'session:{session_id}'))

Redis: Rate limiting


import redis
import time
r = redis.Redis(host='localhost', port=6379)
def is_allowed(user_id, max_requests=100, window=60):
    key = f'rate:{user_id}:{int(time.time() // window)}'
    current = r.incr(key)
    if current == 1:
        r.expire(key, window)
    return current <= max_requests

Memcached: HTTP response cache


from pymemcache.client.base import Client
import json
mc = Client(('localhost', 11211))
def get_cached_response(url):
    cached = mc.get(f'response:{url}')
    if cached:
        return json.loads(cached)
    return None
def cache_response(url, data, ttl=300):
    mc.set(f'response:{url}', json.dumps(data), expire=ttl)

---

Combinación: ambos a la vez

Hay arquitecturas donde conviven:

  • Redis para sesiones, rate limiting, pub/sub
  • Memcached para cache HTTP de páginas

Cada uno en su nicho. No es o/una, son complementarios.

---

Mi recomendación

Empieza con Redis. Cubre el 90% de los casos y es más versátil. Si después tienes un cuello de botella muy específico con strings puros, considera Memcached para esa parte.

---

Lee también: PostgreSQL 17 en Ubuntu 24.04 para persistencia, o Ansible desde cero para automatizar deploys.

Preguntas frecuentes

¿Por qué Redis vs Memcached: cuál elegir para tu aplicación en 2026 es relevante para sysadmins Linux?

Forma parte del flujo diario de administración. Los conceptos explicados se aplican directamente a servidores en producción y resuelven problemas reales que enfrentan sysadmins hispanohablantes.

¿Qué necesito para empezar con Redis vs Memcached: cuál elegir?

Distribución Linux actualizada (Debian, Ubuntu, RHEL, Fedora o Arch), acceso root, y conexión a internet. Para producción: entorno de staging separado antes de aplicar cambios.

¿Cuáles son los errores más comunes con Redis vs Memcached: cuál elegir?

Los tres más frecuentes: (1) saltar la lectura de logs, (2) aplicar cambios directos en producción sin probar, (3) olvidar permisos y ownership. La documentación y un plan de rollback siempre.

¿Cuándo usar Redis vs Memcached: cuál elegir y cuándo una alternativa?

Esta solución es ideal para el caso descrito. Alternativas como Docker, Ansible o configuración manual pueden ser mejores según contexto: portabilidad, escala y reproducibilidad son los factores clave.

¿Cómo migro desde una configuración previa a Redis vs Memcached: cuál elegir?

Documentar el estado actual, probar la nueva configuración en staging, validar funcionalmente, y aplicar en producción con rollback plan listo. Los posts de SoyLinux incluyen troubleshooting para los problemas más comunes.

Lee también

Alfonso Moreno | Sysadmin Senior

Soy Alfonso, sysadmin senior con RHCE y más de 10 años administrando sistemas Linux para empresas y proyectos personales. Me especializo en infraestructura, redes, virtualización, monitoring, automation y self-hosting. Sobre SoyLinux.com SoyLinux.com es un blog técnico en español sobre Linux, software libre y self-hosting. Lo mantengo en mi tiempo libre. Áreas de expertise - Linux server administration: RHEL, CentOS, Rocky, Alma, Fedora, Debian, Ubuntu - Network services: Postfix, BIND, Samba, NFS, Squid - Virtualización y containers: KVM, Proxmox, Docker, Podman - Monitoring: Prometheus, Grafana, Zabbix - Automation: Ansible, Bash scripting - Self-hosting: Vaultwarden, Nextcloud, Jellyfin, Immich, Homelab Contacto - Email: [email protected]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *