Cómo instalar Redis en Debian 9 Stretch

En esta entrada veremos cómo instalar Redis en Debian 9 Stretch paso a paso, para que puedas montar rápida y fácilmente este servicio de bases de datos en memoria sobre tu servidor o VPS Debian.

Antes de instalar Redis en Debian 9 Stretch

Para poder serguir esta breve guía de instalación de Redis en Debian 9 Stretch deberías satisfacer estos mínimos requisitos:

Cómo instalar Redis en Debian 9 Stretch

En este tutorial se va a instalar Redis en Debian 9 Stretch desde los repositorios del sistema, por lo que conviene previamente actualizar la información de las listas de paquetes:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo apt update
~$ sudo apt update
~$ sudo apt update

El paquete que buscamos es redis-server, que podemos instalar directamente con apt:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo apt install -y redis-server
~$ sudo apt install -y redis-server
~$ sudo apt install -y redis-server

Tras la descarga e instalación de Redis y sus dependencias tenemos un nuevo servicio en Debian 9, llamado redis-server.service o simplemente redis-server. El servicio Redis queda en ejecución y habilitado para iniciar automáticamente junto a Debian 9.

Podemos comprobar el estado de Redis Server en cualquier momento con el comando

systemctl status redis-server
systemctl status redis-server:

como instalar redis en debian 9 stretch

Al consultar el estado del servicio también podemos ver que está a la espera de conexiones en el puerto 6379 de la interfaz de red local.

Si necesitas saber qué versión del servidor Redis está corriendo en tu máquina Debian 9 es tan sencillo como lanzar el comando

redis-server -v
redis-server -v:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ redis-server -v
Redis server v=3.2.6 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=36cfef259bdc87cb
~$ redis-server -v Redis server v=3.2.6 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=36cfef259bdc87cb
~$ redis-server -v
Redis server v=3.2.6 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=36cfef259bdc87cb

Cómo instalar el cliente de Redis en Debian 9 Stretch

Una de las dependencias del servidor Redis es precisamente el cliente de consola redis-cli. Pero si solamente quieres instalar el cliente de Redis en Debian 9 para trabajar remotamente sobre otra máquina, el paquete que buscas es redis-tools, que puedes instalar con apt:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo apt install -y redis-tools
~$ sudo apt install -y redis-tools
~$ sudo apt install -y redis-tools

Comprobando el funcionamiento de Redis

Podemos comprobar el funcionamiento local de Redis conectando al servicio desde el cliente de consola redis-cli sin indicar argumento alguno:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ redis-cli
127.0.0.1:6379>
~$ redis-cli 127.0.0.1:6379>
~$ redis-cli
127.0.0.1:6379>

Una sencilla prueba es enviar el comando ping:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
127.0.0.1:6379> ping PONG 127.0.0.1:6379>
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

Inmediatamente recibimos respuesta. También podemos almacenar un par clave/valor:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
127.0.0.1:6379> set paco 14
OK
127.0.0.1:6379>
127.0.0.1:6379> set paco 14 OK 127.0.0.1:6379>
127.0.0.1:6379> set paco 14
OK
127.0.0.1:6379>

Y a continuación recuperar el valor de la clave:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> get paco
"14"
127.0.0.1:6379>
> get paco "14" 127.0.0.1:6379>
> get paco
"14"
127.0.0.1:6379>

Todo funciona como cabía esperar.

Cómo configurar Redis en Debian 9 Stretch

Para configurar Redis en Debian 9 Stretch debes trabajar sobre los archivos de configuración situados en la ruta /etc/redis/, siendo el archivo principal redis.conf. Algo que debemos cambiar inicialmente es el modo de supervisión del servicio, ya que por defecto no está supervisado y podemos establecer el modo systemd, que es el que corresponde a los servicios de Debian 9 Stretch.

Para ello editamos el archivo redis.conf:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /etc/redis/redis.conf
~$ sudo nano /etc/redis/redis.conf
~$ sudo nano /etc/redis/redis.conf

La directiva que buscamos es supervised:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
supervised no
...
... supervised no ...
...
supervised no
...

Y cambiamos su valor a systemd:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
supervised systemd
...
... supervised systemd ...
...
supervised systemd
...

Guardados los cambios, reiniciamos el servicio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl restart redis
~$ sudo systemctl restart redis
~$ sudo systemctl restart redis

Asegurar el servicio con contraseña

Como has visto hasta ahora, el servicio Redis es accesible sin contraseña, pero en ciertos entornos puede ser interesante asegurar el servicio mediante el uso de una contraseña que habrá que enviar antes de empezar a trabajar.

Para ello editaremos el archivo redis.conf y buscamos la directiva requirepass:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
# requirepass foobared
...
... # requirepass foobared ...
...
# requirepass foobared
...

Tendremos que activar la directiva y darle un valor. Sobre esto cabe destacar que la contraseña se almacena en claro, tal cual en este archivo redis.conf, que en principio sólo tiene permisos de lectura para el usuario redis. Por otro lado, la contraseña debe ser muy fuerte, ya que al tratarse de una base de datos en memoria los ataques por fuerza bruta pueden tener éxito si la fuerza de la clave es mediocre.

Editamos la directiva y establecemos un valor:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
requirepass XXXXXXXX
...
... requirepass XXXXXXXX ...
...
requirepass XXXXXXXX
...

Y reiniciamos el servicio.

Ahora no podremos trabajar si no nos autenticamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ redis-cli
127.0.0.1:6379> get paco
(error) NOAUTH Authentication required.
127.0.0.1:6379>
~$ redis-cli 127.0.0.1:6379> get paco (error) NOAUTH Authentication required. 127.0.0.1:6379>
~$ redis-cli
127.0.0.1:6379> get paco
(error) NOAUTH Authentication required.
127.0.0.1:6379>

Usaremos el comando auth para enviar la clave:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
127.0.0.1:6379> auth XXXXXXXX
OK
127.0.0.1:6379> get paco
"14"
127.0.0.1:6379>
127.0.0.1:6379> auth XXXXXXXX OK 127.0.0.1:6379> get paco "14" 127.0.0.1:6379>
127.0.0.1:6379> auth XXXXXXXX
OK
127.0.0.1:6379> get paco
"14"
127.0.0.1:6379>

Acceso remoto a Redis en Debian 9 Stretch

Si queremos permitir el acceso remoto al servicio Redis en Debian 9 debemos editar el archivo de configuración redis.conf y buscar la directiva bind:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1
...
... # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES # JUST COMMENT THE FOLLOWING LINE. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind 127.0.0.1 ...
...
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1
...

Para permitir el acceso desde nuestra red local debemos añadir la dirección del adaptador de red correspondiente a la directiva bind:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
bind 127.0.0.1 192.168.0.100
...
... bind 127.0.0.1 192.168.0.100 ...
...
bind 127.0.0.1 192.168.0.100
...

Aplicamos los cambios reiniciando el servicio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl restart redis-server
~$ sudo systemctl restart redis-server
~$ sudo systemctl restart redis-server

Configurar el firewall UFW de Debian 9 para Redis

Si tienes activado el firewall UFW en Debian 9 Stretch necesitarás añadir una regla para permitir el acceso remoto al servicio Redis:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo ufw allow 6379/tcp
~$ sudo ufw allow 6379/tcp
~$ sudo ufw allow 6379/tcp

Ahora desde cualquier máquina de la red local podemos conectar al servicio Redis, por ejemplo a través del cliente redis-cli indicando la dirección del servidor Debian 9:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ redis-cli -h debian9.local
debian9.local:6379> auth XXXXXXXX
OK
debian9.local:6379> get paco
"14"
debian9.local:6379>
~$ redis-cli -h debian9.local debian9.local:6379> auth XXXXXXXX OK debian9.local:6379> get paco "14" debian9.local:6379>
~$ redis-cli -h debian9.local
debian9.local:6379> auth XXXXXXXX
OK
debian9.local:6379> get paco
"14"
debian9.local:6379>

Extensión de PHP para Redis

Si quieres desarrollar en PHP con Redis, necesitas instalar la extensión php-redis para Debian 9:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo apt install -y php-redis
~$ sudo apt install -y php-redis
~$ sudo apt install -y php-redis

Una vez instalada la extensión php-redis puedes trabajar con tu servicio Redis en PHP, como se puede comprobar creando un sencillo script:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ nano redis.php
~$ nano redis.php
~$ nano redis.php

Con este contenido:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
$clave = 'paco';
$password = 'XXXXXXXX';
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
if ($redis->auth($password)) {
$valor = $redis->get($clave);
echo "La clave '$clave' tiene el valor $valor\n\n";
} else {
echo "Error de autenticación\n\n";
}
$redis->close();
<?php $clave = 'paco'; $password = 'XXXXXXXX'; $redis = new Redis(); $redis->connect('127.0.0.1', 6379); if ($redis->auth($password)) { $valor = $redis->get($clave); echo "La clave '$clave' tiene el valor $valor\n\n"; } else { echo "Error de autenticación\n\n"; } $redis->close();
<?php
$clave = 'paco';
$password = 'XXXXXXXX';

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

if ($redis->auth($password)) {
        $valor = $redis->get($clave);
        echo "La clave '$clave' tiene el valor $valor\n\n";
        } else {
        echo "Error de autenticación\n\n";
        }

$redis->close();

Básicamente se establece una conexión al servicio Redis local, se envía la contraseña y se solicita el valor de la clave que hemos usado durante el tutorial, para imprimir un mensaje.

Podríamos haber creado este script en la ruta adecuada para ser usado a través del servidor web, pero podemos también usar PHP en consola:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ php redis.php
La clave 'paco' tiene el valor 14
~$
~$ php redis.php La clave 'paco' tiene el valor 14 ~$
~$ php redis.php
La clave 'paco' tiene el valor 14

~$

Conclusión

Ya sabes cómo instalar el servicio Redis en Debian 9 Strech de forma rápida y sencilla, por lo que puedes desarrollar o implantar aplicaciones que se apoyan en esta veloz base de datos persistente en memoria.

Si tienes alguna duda, pregunta, sugerencia, etc. puedes dejar un comentario.

Y si gracias a esta pequeña guía de instalación y configuración de Redis en Debian 9 Stretch ya tienes funcionando este servicio en tu máquina y quieres agradecérnoslo, puedes ayudarnos dejando una propina de tan sólo 1 $ en PayPal:

O, si te sientes especialmente agradecido, puedes invitarnos a un café:

¡Gracias!

5/5 - (1 voto)

2 comentarios en «Cómo instalar Redis en Debian 9 Stretch»

Deja un comentario

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.

Buy Me A Coffee
Gracias por la visita. Si te gusta el artículo, ¡puedes invitarme a un café!