Redis es un almacén de estructura de datos en memoria de código abierto. Se puede utilizar como base de datos, caché y agente de mensajes y admite varias estructuras de datos, como cadenas, hashes, listas, conjuntos, etc. Redis proporciona alta disponibilidad a través de Redis Sentinel, incluido el monitoreo y las notificaciones. Conmutación automática por error. También proporciona particiones automáticas en varios nodos de Redis con Redis Cluster.
Este tutorial describe cómo instalar y configurar Redis en un servidor Ubuntu 18.04. Las mismas instrucciones se aplican a Ubuntu 16.04 y cualquier distribución basada en Ubuntu.
Requisitos previos #
Antes de comenzar con el tutorial, asegúrese de haber iniciado sesión como usuario con privilegios de sudo.
Instalando Redis en Ubuntu #
El paquete Redis está incluido en los repositorios predeterminados de Ubuntu 18.04. La instalación es bastante sencilla, solo siga los pasos a continuación:
-
Comience actualizando la lista de paquetes apt ejecutando el siguiente comando en su terminal SSH:
sudo apt update
-
Instale Redis escribiendo:
sudo apt install redis-server
-
Una vez completada la instalación, el servicio Redis se iniciará automáticamente. Para verificar el estado del servicio, ingrese el siguiente comando:
sudo systemctl status redis-server
Deberías ver algo como esto:
● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2018-10-28 05:10:45 PDT; 2h ago Docs: http://redis.io/documentation, man:redis-server(1) Process: 2197 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS) Process: 2201 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS) Main PID: 2226 (redis-server) Tasks: 4 (limit: 2319) CGroup: /system.slice/redis-server.service `-2226 /usr/bin/redis-server 0.0.0.0:6379
Felicitaciones, en este momento tiene Redis instalado y ejecutándose en su servidor Ubuntu 18.04.
Configure Redis Remote Access #
De forma predeterminada, Redis no permite conexiones remotas. Puede conectarse al servidor de Redis solo desde 127.0.0.1 (host local), la máquina donde se ejecuta Redis.
Realice los siguientes pasos solo si desea conectarse a su servidor Redis desde hosts remotos. Si está utilizando una configuración de servidor único, donde la aplicación y Redis se ejecutan en la misma máquina, entonces no debe habilitar el acceso remoto.
Para configurar Redis para aceptar conexiones remotas, abra el archivo de configuración de Redis con su editor de texto:
sudo nano /etc/redis/redis.conf
Localice la línea que comienza con bind 127.0.0.1 ::1
y reemplaza 127.0.0.1
con 0.0.0.0
.
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 0.0.0.0 ::1
Guarde el archivo y cierre el editor.
Reinicie el servicio Redis para que los cambios surtan efecto:
sudo systemctl restart redis-server
Use el siguiente comando para verificar que redis esté escuchando en todas las interfaces en el puerto 6379
:
ss -an | grep 6379
Debería ver algo como a continuación. 0.0.0.0
significa todas las direcciones IPv4 en la máquina.
tcp LISTEN 0 128 0.0.0.0:6379 0.0.0.0:*
tcp LISTEN 0 128 [::]:6379 [::]:*
A continuación, deberá agregar una regla de firewall que habilite el tráfico de sus máquinas remotas en el puerto TCP 6379
.
Suponiendo que está utilizando UFW
para administrar su firewall y desea permitir el acceso desde el 192.168.121.0/24
subred, ejecutaría el siguiente comando:
sudo ufw allow proto tcp from 192.168.121.0/24 to any port 6379
En este punto, el servidor Redis aceptará conexiones remotas en el puerto TCP 6379.
Asegúrese de que su firewall esté configurado para aceptar conexiones solo de rangos de IP de confianza.
Para verificar que todo esté configurado correctamente, puede intentar hacer ping al servidor Redis desde su máquina remota usando redis-cli
utilidad:
redis-cli -h <REDIS_IP_ADDRESS> ping
El comando debe devolver una respuesta de PONG
:
PONG