EQVPS
PanelEmpezar

Cómo instalar Redis en un VPS: límite de memoria, persistencia y una contraseña que no se pierde

Instala Redis en Ubuntu 24.04, limita su memoria para que no ocupe todo el servidor, activa el archivo AOF sin borrar tus datos y pon una contraseña que sobreviva a los reinicios. Dos de estos pasos tienen trampas en las que caímos en nuestro propio servidor de prueba.

Redis guarda los datos en memoria y responde en torno a un milisegundo, por eso está detrás de tantas aplicaciones como caché, cola o almacén de sesiones. La instalación es un comando. El trabajo está en los valores por defecto: sin límite de memoria, instantáneas que pueden perder escrituras recientes y dos errores fáciles que borran tus datos o desactivan tu contraseña sin avisar. Esta guía cubre todo eso en Ubuntu 24.04. Hicimos cada paso en nuestra imagen; las cifras salen de un servidor Micro (2 vCPU, 2 GB).

Necesitas un usuario con sudo. La guía de configuración de Ubuntu crea uno.

1. Instalar

sudo apt update
sudo apt install -y redis-server
redis-server --version
redis-cli ping

La instalación tardó 13 segundos y nos dio Redis 7.0.15. Arranca enseguida y en cada inicio, responde PONG y escucha solo en el propio servidor: 127.0.0.1:6379 y [::1]:6379, con protected-mode yes. Sin datos, usaba 13,5 MB de RAM.

El registro ya mostraba un aviso:

WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition.

Redis guarda en disco desde una copia de sí mismo creada con fork, y con el ajuste por defecto del kernel ese fork puede fallar cuando falta memoria. Corrígelo una vez:

echo 'vm.overcommit_memory = 1' | sudo tee /etc/sysctl.d/90-redis.conf
sudo sysctl -p /etc/sysctl.d/90-redis.conf
sudo systemctl restart redis-server

Tras el reinicio, el aviso desapareció.

2. Limitar su memoria

De fábrica, maxmemory vale 0, es decir, sin límite, y la política es noeviction. Redis seguirá tomando RAM hasta que el servidor se quede sin ella. Fija un techo y decide qué ocurre al alcanzarlo:

redis-cli CONFIG SET maxmemory 256mb
redis-cli CONFIG SET maxmemory-policy allkeys-lru
redis-cli CONFIG REWRITE

Probamos las dos políticas con un límite de 64 MB y 400.000 escrituras:

  • noeviction (por defecto): la memoria se detuvo en 63 MB y las escrituras nuevas fallaron con OOM command not allowed when used memory > 'maxmemory'. Adecuada para una cola o cualquier cosa que no puedas perder.
  • allkeys-lru: Redis descartó las claves usadas hace más tiempo, 48.606 en total, y todas las escrituras pasaron. Adecuada para una caché.

CONFIG REWRITE guarda los ajustes en curso en /etc/redis/redis.conf, para que sobrevivan a un reinicio. También añade una línea que debes conocer antes del paso 4.

3. Elegir cómo guarda en disco

Por defecto, Redis escribe una instantánea (/var/lib/redis/dump.rdb) tras 1 cambio en una hora, 100 en cinco minutos o 10.000 en un minuto. Probamos tres formas de pararlo:

Cómo se paró RedisSolo instantáneas (por defecto)Con el archivo AOF
systemctl restartNada perdido: guarda al apagarseNada perdido
Matado con kill -9La clave escrita tras la última instantánea había desaparecidoUna clave escrita 2 segundos antes seguía allí

En ambos casos, systemd volvió a arrancar Redis por sí solo en segundos.

Si Redis guarda datos que echarías de menos, activa el archivo AOF (append-only file). Registra cada escritura y la vuelca a disco una vez por segundo. Hazlo con el servidor en marcha, no editando el archivo:

redis-cli CONFIG SET appendonly yes
redis-cli CONFIG REWRITE
redis-cli INFO persistence | grep aof_

Primero probamos la otra vía, y nos costó los datos. Cambiamos appendonly no por appendonly yes en redis.conf y reiniciamos. Redis volvió con un AOF vacío y no cargó nada de la instantánea, así que todas las claves existentes se perdieron. Al apagarse después, además escribió su nuevo contenido, ya sin las claves antiguas, encima de dump.rdb. CONFIG SET lo evita: Redis escribe primero el AOF con los datos que tiene en memoria. Tras un reinicio, todas nuestras claves estaban allí.

Si Redis es una caché pura que puede arrancar vacía, haz lo contrario y desactiva el guardado con redis-cli CONFIG SET save "".

4. Poner una contraseña

Aquí está la segunda trampa. Tras cualquier CONFIG REWRITE, Redis 7 añade esta línea al final de redis.conf:

user default on nopass ~* &* +@all

Significa «el usuario por defecto no necesita contraseña». Después añadimos requirepass más arriba en el archivo y reiniciamos. Redis seguía respondiendo PONG sin contraseña, porque la línea user la anula. Pon la contraseña a través de Redis:

REDIS_PASS=$(openssl rand -hex 24)
echo "$REDIS_PASS"
redis-cli CONFIG SET requirepass "$REDIS_PASS"
REDISCLI_AUTH="$REDIS_PASS" redis-cli CONFIG REWRITE

Guarda la contraseña en un lugar seguro. Redis la almacena ahora como hash SHA-256 en esa misma línea user default. Tras un reinicio, redis-cli ping respondió NOAUTH Authentication required. y solo funcionaba la contraseña. Pásala a redis-cli con la variable REDISCLI_AUTH. Con -a aparece en la lista de procesos, y redis-cli te avisa de ello. En tu aplicación, ponla en la URL de Redis: redis://:PASSWORD@127.0.0.1:6379/0.

5. Acceder desde tu ordenador

Deja Redis en 127.0.0.1 y usa un túnel SSH. Usa el puerto SSH de tu servidor, que en los planes NAT es tu puerto personal:

ssh -N -L 6380:127.0.0.1:6379 deploy@YOUR_SERVER_IP -p 22

Mientras eso esté en marcha, redis-cli -p 6380 y las herramientas de escritorio de tu ordenador hablan con el Redis del servidor. No queda nada nuevo abierto a internet. Con la guía de claves SSH el túnel entra sin contraseña.

Qué velocidad tiene

En el servidor de prueba Micro, redis-benchmark con 50 clientes nos dio:

PruebaPeticiones por segundoLatencia mediana
SET30.3031,0 ms
GET35.1490,9 ms
SET, 16 comandos por ida y vuelta272.1092,4 ms
GET, 16 comandos por ida y vuelta414.9381,3 ms

Para la caché o la cola de tareas de una aplicación web, es mucho más de lo que vas a necesitar. La velocidad extra viene de enviar los comandos en lotes (pipelining).

Qué plan elegir

Redis necesita RAM para tus datos y poco más. Nano (2 vCPU, 1 GB, $3/mes) ejecuta Redis junto a una aplicación pequeña con maxmemory 256mb. Micro (2 GB, $5/mes) deja sitio para una caché mayor y la aplicación. Si otra cosa tiene que conectarse directamente a Redis, usa tu propia IPv4 (desde Nano-IP a $8/mes) y permite solo esa dirección en el cortafuegos. Todos los planes están en la página de VPS, y el pago es en USDT, USDC o ETH en Base, Ethereum o Polygon.

Preguntas frecuentes

¿Cuánta RAM necesita Redis?

Redis en sí es diminuto: 13,5 MB justo después de instalarlo en nuestro servidor. Lo que necesita es espacio para tus datos, que viven en memoria. Ajusta maxmemory a lo que el servidor pueda ceder, por ejemplo 256 MB en uno de 1 GB, y elige qué pasa cuando se llena.

¿Redis o Valkey?

Valkey es un fork de Redis que partió de Redis 7.2 y habla el mismo protocolo, así que la mayoría de los clientes funcionan con ambos. Ubuntu 24.04 solo trae Redis 7.0.15. Debian 13 tiene Redis 8.0 y Valkey 8.1, y Debian 12 recibe Valkey 8.0 desde backports. Los pasos de esta guía sirven para los dos.

¿Por qué Redis pierde datos tras una caída?

Por defecto, Redis guarda una instantánea en disco cada pocos minutos, según cuántas claves hayan cambiado. Cuando matamos el proceso, la clave escrita después de la última instantánea había desaparecido. Activa el archivo AOF, que escribe cada segundo, y una caída te costará como mucho alrededor de un segundo de escrituras.

Añadí requirepass a redis.conf, ¿por qué Redis sigue aceptando comandos sin contraseña?

Probablemente porque en algún momento se ejecutó CONFIG REWRITE. En Redis 7 añade la línea user default on nopass ~* &* +@all al final de redis.conf, y esa línea anula un requirepass escrito más arriba. Pon la contraseña con CONFIG SET requirepass y luego CONFIG REWRITE, y Redis la guardará en esa línea.

¿Puedo abrir el puerto 6379 a internet?

Mejor no. Los puertos de Redis abiertos se escanean sin parar y son una vía habitual para entrar en servidores. Accede a Redis desde tu ordenador por un túnel SSH, o mantenlo en el mismo servidor que la aplicación que lo usa.

Comentarios

Aún no hay comentarios. Sé el primero.

Deja un comentario

Los comentarios se moderan antes de aparecer.