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 conOOM 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ó Redis | Solo instantáneas (por defecto) | Con el archivo AOF |
|---|---|---|
systemctl restart | Nada perdido: guarda al apagarse | Nada perdido |
Matado con kill -9 | La clave escrita tras la última instantánea había desaparecido | Una 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:
| Prueba | Peticiones por segundo | Latencia mediana |
|---|---|---|
| SET | 30.303 | 1,0 ms |
| GET | 35.149 | 0,9 ms |
| SET, 16 comandos por ida y vuelta | 272.109 | 2,4 ms |
| GET, 16 comandos por ida y vuelta | 414.938 | 1,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.
Comentarios
Aún no hay comentarios. Sé el primero.