Por qué autoalojar Redis en un VPS
Redis vive en memoria: su rendimiento depende directamente de la RAM y de la latencia de red. Las ofertas gestionadas facturan cada GB de RAM muy caro e imponen topes de conexiones. En un VPS, dimensiona la RAM según su necesidad real, configura libremente maxmemory y la política de expulsión (allkeys-lru, volatile-ttl...), y activa la persistencia RDB y/o AOF según su tolerancia a la pérdida de datos. Para una caché de aplicación, un broker de trabajos (Sidekiq, BullMQ, Celery) o un almacén de sesiones, un Redis pegado a su aplicación en la misma red privada elimina la latencia entre centros de datos y reduce drásticamente el coste.
Los beneficios concretos de un Redis autoalojado
- Latencia por debajo del milisegundo si Redis se ejecuta en el mismo VPS o en la misma red privada que su aplicación.
- Control de
maxmemoryy de la política de expulsión según su uso como caché o como cola de trabajos. - Persistencia a elegir: RDB (snapshots), AOF (journal), o ambas para la durabilidad.
- Coste de RAM sin sobrefacturación: paga la tarifa del VPS, no el GB de memoria premium.
- Módulos libres: RediSearch, RedisJSON, RedisBloom según sus necesidades.
- Ningún tope arbitrario en el número de conexiones de clientes simultáneas.
Requisitos de hardware y software
Como Redis funciona en memoria, lo que cuenta es la RAM, no la CPU. Para una caché modesta o un almacén de sesiones, 1 vCPU y 1 a 2 GB de RAM son suficientes — Redis open source tiene un bajo consumo de CPU ya que es monohilo para los comandos (las E/S de red son asíncronas). Si Redis actúa como broker para miles de trabajos en cola o almacena en memoria conjuntos de datos de varios GB, dimensione la RAM al menos al doble de su maxmemory objetivo para absorber la copia en escritura durante los snapshots RDB.
En cuanto al disco, prevea al menos 2× el tamaño de su dataset si activa la persistencia RDB o AOF. En cuanto al software: Ubuntu 22.04/24.04 LTS, Docker y Compose v2, un volumen persistente para AOF/RDB si activa la persistencia, y el parámetro vm.overcommit_memory=1 en el host para evitar los fallos de fork durante las copias de seguridad.
Desplegar Redis con Docker en producción
Preparar el host
Instale Docker, después ajuste
vm.overcommit_memory=1mediantesysctlpara fiabilizar los snapshots, y desactive las Transparent Huge Pages. Cierre el puerto 6379 hacia el exterior: un Redis expuesto sin contraseña es un objetivo clásico de los criptomineros.echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf sysctl -p echo never > /sys/kernel/mm/transparent_hugepage/enabledEscribir el docker-compose.yml
Declare un servicio
redis:7-alpinecon un comando personalizado que apunte a unredis.confmontado en solo lectura. Activerequirepass, definamaxmemoryymaxmemory-policy, y monte un volumen para/datasi desea la persistencia.services: redis: image: redis:7-alpine command: redis-server /etc/redis/redis.conf volumes: - ./redis.conf:/etc/redis/redis.conf:ro - redis_data:/data restart: unless-stopped ports: - "127.0.0.1:6379:6379" volumes: redis_data:Configurar la seguridad
En
redis.conf, la seguridad descansa sobre varias capas complementarias. La primera es el binding de red:bind 127.0.0.1o su IP de red privada — nunca escuche en0.0.0.0sin protección adicional. La segunda es la autenticación:requirepass SU_CONTRASEÑA_FUERTEpara Redis 6 y anteriores; para Redis 7, prefiera las ACL que permiten crear usuarios con permisos granulares:bind 127.0.0.1 requirepass SU_CONTRASEÑA_FUERTE aclfile /etc/redis/users.acl rename-command FLUSHALL "" rename-command CONFIG "" rename-command DEBUG ""El archivo
users.aclpuede declarar:user app_user on >CONTRASEÑA ~* +@read +@write -@dangerous user default offPara acceso remoto cifrado, active el TLS nativo de Redis (disponible desde Redis 6):
tls-port 6380 tls-cert-file /certs/redis.crt tls-key-file /certs/redis.key tls-ca-cert-file /certs/ca.crtElegir la estrategia de persistencia
Redis ofrece dos mecanismos de persistencia, combinables.
RDB (snapshot): Redis escribe una instantánea del dataset en disco a intervalos configurables. Rápido en el reinicio, pero pierde los datos escritos desde el último snapshot en caso de fallo.
save 900 1 save 300 10 save 60 10000AOF (Append-Only File): cada comando de escritura se registra. Más seguro, algo más lento.
appendfsync everyseces el buen equilibrio: como mucho 1 segundo de datos perdidos.appendonly yes appendfsync everysec auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mbCombinando RDB + AOF: al reiniciar, Redis usa el AOF (más completo), mientras que RDB acelera las copias de seguridad completas periódicas. Es la estrategia recomendada para brokers de trabajos críticos.
Para una caché pura donde la pérdida de datos es aceptable, desactive la persistencia:
save ""yappendonly no— gana rendimiento y espacio en disco.Conectar su aplicación
Lance con
docker compose up -dy pruebe condocker compose exec redis redis-cli -a SU_PASS ping. Apunte su aplicación hacia la red Docker interna en lugar de hacia una IP pública, por latencia y por seguridad.docker compose exec redis redis-cli -a SU_PASS ping # PONG docker compose exec redis redis-cli -a SU_PASS CONFIG GET maxmemoryVigilar la memoria
Vigile
used_memoryyevicted_keysmedianteredis-cli INFO. Si las expulsiones aumentan, incremente la RAM o afine la política. Configure una alerta cuando el uso de memoria supere el 80% demaxmemory.redis-cli -a SU_PASS INFO memory | grep -E 'used_memory_human|maxmemory_human|mem_fragmentation_ratio' redis-cli -a SU_PASS INFO stats | grep -E 'evicted_keys|keyspace_hits|keyspace_misses'Conectarse por primera vez
Abra la URL: RedisInsight se muestra directamente, SIN ninguna solicitud de credenciales (solo acepta las condiciones de uso en la primera pantalla), y su base Redis local ya está accesible en lectura/escritura. No asocie un dominio público a esta interfaz sin protección previa.
Resolución de errores: los más frecuentes
Aquí están los errores que encontrará más a menudo al explotar Redis en un VPS, con su causa y su solución.
MISCONF Redis is configured to save RDB snapshots, but it's currently unable to persist on disk— Redis intenta un snapshot pero el fork falla. Causa:vm.overcommit_memoryestá en 0 en el host. Solución:sysctl vm.overcommit_memory=1(permanente en/etc/sysctl.conf). Si usa Docker, este parámetro debe establecerse en el host Docker, no dentro del contenedor.ERR max number of clients reached— El número de conexiones simultáneas superamaxclients(por defecto: 10.000). Causas frecuentes: pool de conexiones mal configurado en la aplicación (Sidekiq, Laravel Horizon, etc.) o conexiones no cerradas. Solución: aumentemaxclientsenredis.confy verifique la configuración del pool en el lado de la app. El comandoredis-cli CLIENT LISTlista las conexiones activas.- El OOM Killer mata el proceso Redis — El kernel Linux mata Redis por falta de memoria libre. Causa:
maxmemoryno definido o demasiado generoso, combinado con la copia en escritura del fork RDB. Solución: fijemaxmemoryal 60-70% de la RAM disponible, elija una política de expulsión (maxmemory-policy allkeys-lrupara caché,noevictionpara broker), y planifique 2× el dataset para el fork RDB. Monitorice/var/log/syslogpara mensajesOut of memory: Kill process. Could not create server TCP listening socket 0.0.0.0:6379: bind: Address already in use— Otro proceso ocupa el puerto 6379. Identifíquelo conss -tlnp | grep 6379y deténgalo, o cambie el puerto Redis en su configuración. En VPS con una instancia Redis instalada medianteapt, el servicio del sistema puede entrar en conflicto con su contenedor Docker.
Alta disponibilidad: Sentinel y Cluster
Para las cargas de trabajo críticas en las que una indisponibilidad de Redis es inaceptable, existen dos soluciones.
Redis Sentinel es la solución de alta disponibilidad para una arquitectura maestro/réplicas. Despliegue tres nodos Sentinel en tres VPS distintos: Sentinel monitoriza al maestro, detecta su fallo y promueve automáticamente una réplica. Sus aplicaciones se conectan a través del servicio Sentinel en lugar de directamente al maestro — son transparentes al failover.
Redis Cluster particiona los datos en varios nodos (sharding horizontal) e incluye alta disponibilidad integrada. Requiere como mínimo 6 nodos (3 maestros + 3 réplicas) y una adaptación del cliente. Resérvelo para datasets que superen la RAM de un único servidor o para cargas de trabajo que requieran un caudal de escritura muy elevado.
Para la gran mayoría de los usos en VPS, Sentinel en 3 nodos es la respuesta correcta: más simple de operar, compatible con todos los clientes Redis estándar, y suficiente para datasets de unas decenas de GB.
Actualizaciones y Valkey como alternativa
Sobre las versiones. Redis 7.4 es la rama estable LTS actual (7.4.11 en el momento de la redacción). Redis 8 es la última versión mayor GA, publicada en mayo de 2025, que también marcó la adopción de AGPLv3 como tercera opción de licencia — junto al RSALv2 y SSPLv1 adoptados en marzo de 2024. Para una migración de Redis 7.x a Redis 8, consulte las notas de versión oficiales.
Sobre la licencia. En marzo de 2024, Redis Ltd. abandonó la licencia BSD 3-Clause en favor de una doble licencia RSALv2 + SSPLv1 (no aprobada por OSI). En respuesta, la Linux Foundation creó Valkey el 28 de marzo de 2024 — un fork de Redis 7.2.4 bajo licencia BSD 3-Clause, respaldado por AWS, Google Cloud, Oracle y otros miembros fundadores. Valkey es una alternativa directa a Redis: las APIs y protocolos son compatibles, y la migración es generalmente transparente. Un artículo dedicado compara los dos proyectos en detalle: Valkey vs Redis en 2026: ¿debería migrar?
Para los usos privados comunes (caché de aplicación, broker de trabajos, almacén de sesiones en su propia infraestructura), Redis 7.x u 8 sigue siendo totalmente utilizable sin fricción de licencia.
Vigile la relación keyspace_hits / keyspace_misses mediante INFO stats: una tasa de aciertos baja significa que su caché está mal dimensionada o que sus TTL son demasiado cortos. Para las cargas críticas, despliegue Redis Sentinel en tres VPS con el fin de obtener una conmutación por error automática: si el maestro cae, una réplica es promovida sin intervención, y sus aplicaciones se redirigen a través del servicio Sentinel.
La documentación oficial
Para la configuración avanzada y las opciones propias de la herramienta, consulte la documentación oficial de Redis. Esta guía cubre la puesta en línea en un VPS; la documentación del editor sigue siendo la referencia para los ajustes finos, las actualizaciones mayores y los casos de uso específicos.