Base de datos Redis en Windows
Como vimos en el artículo que escribí hace ya algún tiempo “Bases de datos NoSQL” una de las que hablamos era la base de datos Redis.
Redis es una base de datos NoSQL en memoria, es decir, trabaja desde la memoria RAM y los datos los almacena en tipos clave-valor. Sin embargo, también admite persistencia de datos en disco para evitar pérdidas mediante capturas instantáneas periódicas de la base de datos. Soporta diferentes tipos de datos como listas, conjuntos, hashes, etc. Y se puede usar con varios de los lenguajes de programación principales, como Python, PHP, Ruby, Go, y algunos más.
Debido a que trabaja desde la RAM, es bastante (super) rápida y es útil para el almacenamiento temporal de datos, proporcionando acceso rápido a los datos que se acceden con más frecuencia, haciéndola ideal para sesiones de usuario, almacenamiento en caché, sistemas de mensajería, etc.
En definitiva, Redis es útil si queremos velocidad y datos temporales, o sea, que no necesitamos almacenar los datos para siempre y nos interesa que los tiempos de respuesta sean extremadamente bajos.
En este articulo vamos a ver como instalarla en Windows y como usarla con PHP.
Instalación de Redis en Windows
Antes de nada me vas a perdonar, pero déjame decirte que no existe un cliente nativo oficial para Windows 😅 Pero tranquil@, hay solución.
Podemos instalar Redis en Windows, pero no como el típico programa de instalación.
¿Qué te quiero decir?
Pues que, para instalar Redis en Windows, debemos realizar algunos pasos antes de instalarlo.
El primer paso es instalar WSL (Windows Subsystem for Linux) que nos permitirá ejecutar Redis en un entorno Linux directamente en Windows. Si, similar a lo que sería Wine en Linux.
La segunda forma de instalar Redis en Windows a través de un contenedor. Por ejemplo, con Docker.
En este articulo vamos a usar esta segunda opción. Y ya de paso aprendemos un poco sobre Docker.
Primero de todo, ¿Qué es Docker?
Sin entrar en muchos detalles (quizás más adelante hable en un artículo sobre Docker), por ahora y en pocas palabras debes de saber que Docker es similar a lo que sería una máquina virtual como VirtualHost por ejemplo, pero sin llegar a serlo, es decir, Docker se basa en la virtualización en contenedores, permitiendo ejecutar aplicaciones dentro de los mismos.
Instalar Docker en Windows
Accedemos aquí y descargamos nuestra versión de Windows.

Una vez descargado damos “doble click” al ejecutable y lo instalamos.


El proceso tarda unos minutos.
Una vez finalizada la instalación nos pedirá reiniciar el equipo así que reiniciamos.

Una vez reiniciado, para completar la instalación nos pedirá usarlo con la configuración recomendada o bien, seleccionar nosotros la configuración, que no es otra cosa que actualizar a la última versión de WSL 2. Como ves en la imagen de abajo, yo he elegido la configuración avanzada.

Después de instalarlo y ejecutarlo por primera vez, deberemos de aceptar si o si los términos y condiciones si queremos usarlo.

Ahora elegimos “Personal” y nos identificamos con nuestra cuenta. Evidentemente si es la primera vez que usas Docker deberás de crear una cuenta.

La primera vez que nos conectemos con nuestra cuenta nos aparecerá la siguiente ventana que podemos saltar:

Y, por último, una vez hechos todos estos pasos, nos aparecerá la siguiente ventana que es la “página principal” de Docker.

Por cierto, si queremos comprobar la versión de Docker o que este se haya instalado correctamente, en la consola de Windows ejecutamos:

Y como vemos todo está correcto. Ahora vayamos al grano: instalar Redis en Windows.
Instalar Redis en Windows usando Docker
Antes de nada, asegúrate de tener Docker iniciado.
Después, abre la consola (cmd) de Windows y escribe:
docker pull redis
Como ves en la siguiente imagen de abajo, esto descargará la última versión de Redis:

Si nos vamos a la pestaña “images” de Docker Desktop, también podemos ver como se ha descargado redis:

Si, también podríamos haber instalado Redis desde la interfaz gráfica, o sea, usando Docker Desktop directamente sin usar la consola, pero como dije al principio, el objetivo de este articulo no es enseñar Docker, sino instalar Redis 🙃
Continuemos…
Una vez descargado Redis, ahora toca crear un contenedor para ejecutar Redis en ese contenedor. Para ello ejecutamos el siguiente comando en la consola de Windows:
docker run -d -p 6379:6379 --name redis-server redis
Como acabo de decir, lo que hemos hecho ha sido crear un contenedor para ejecutar Redis.
Con los siguientes comandos:
-d: Ejecutamos el contenedor en segundo plano.
-p 6379:6379: Mapeamos el puerto de escucha por defecto de Redis que es el 6379 al puerto 6379 de nuestra máquina.
–name redis-server: Asignamos el nombre ‘redis-server’ al contenedor.
redis: Es el nombre de la imagen de Redis que hemos descargado.
Al fin y al cabo, lo que nos permite Docker es interactuar con, en este caso Redis, como si estuviera instalado directamente en nuestro ordenador, pero no, realmente está dentro de un contenedor. En otras palabras, Redis no se instala de verdad en nuestro sistema. Esa es la ventaja de usar Docker 😉
Si todo está bien, ahora ejecutamos en la misma terminal ‘docker ps’ y esto nos listara todos los contenedores que tenemos ejecutándose. En nuestro caso solo Redis:

Pues bien, ahora ya podemos decir que tenemos instalado Redis y toca usarlo.
¿Ya era hora no? Para ello en la misma consola de Windows ejecutamos:
docker exec -it redis-server redis-cli
Y esto nos permite usar el cliente de Redis dentro del contenedor.
Y ahora ya si, podemos crear nuestro primer conjunto de clave-valor:

Si queremos parar, reiniciar o eliminar el contenedor de Redis hacemos:
- docker stop redis-server: para detenerlo.
- docker start redis-server: para iniciarlo o reiniciarlo.
- docker rm -f redis-server: para eliminarlo.
Antes de terminar este apartado, déjame decirte que, en Windows, una vez apagado tu ordenador, cuando lo vuelvas a encender y quieras usar Redis, deberás de iniciar antes Docker.
Lo puedes hacer a través de Docker-Desktop. Bastará solo con abrirlo y a continuación puedes volver a la consola y ejecutar el comando:
docker exec -it redis-server redis-cli
O bien este:
docker start redis-server
Y a continuación:
redis-cli
¿Cuál es la diferencia?
El primer comando permite trabajar con Redis directamente desde dentro del contenedor, esto significa que no es necesario mapear ningún puerto, pero dado que hemos mapeado el puerto de Redis al host (nuestra maquina), con los dos últimos comandos tenemos suficiente. Al hacerlo de esta manera trabajamos desde fuera del contenedor, es decir, nos conectamos desde fuera (nuestra maquina) a Redis. O, mejor dicho, al contenedor que contiene Redis. No se si me he explicado bien 😝

Usar Redis con PHP
Ahora que ya hemos visto como instalar Redis en Windows y sabemos qué es Docker, podemos trabajar con Redis usando cualquier lenguaje de programación, pero en nuestro caso elegimos PHP.
La extensión de Redis para PHP es esta
O bien accedemos aquí y descargamos la última versión.

Y ahora elegimos la versión de PHP que tengamos instalada. En mi caso, ahora mismo tengo activo PHP 8.2 Non-Thread Safe (NTS).

Este paso nos recuerda un poco a la instalación de MongoDB para PHP en Windows ¿no?
Una vez descargado y descomprimido, copiamos el archivo .dll al directorio de extensiones de nuestra versión de PHP. En mi caso, al usar Laragon se encuentra en: C:\laragon\bin\php\php-8.2.26-nts-Win32-vs16-x64\ext

Luego, activamos la extensión por medio del archivo php.ini:

O bien desde el propio menú de Laragon (si usas Laragon claro):
Botón derecho en el icono de Laragon >> PHP >> Extensiones >> Redis

Y ahora ya si, por fin, podemos empezar a “picar código” 😃
Empezaremos con lo básico, conectarnos al servidor de Redis con PHP.
Conectar a Redis con PHP
Para comprobar que todo funciona, primero establecemos una conexión con Redis:
<?php // Crear una nueva instancia del cliente Redis $redis = new Redis(); try { // Conectar a Redis (host y puerto del contenedor) $redis->connect('127.0.0.1', 6379); echo "¡Conexión exitosa a Redis!<br>"; // Almacenar un valor $redis->set('saludar', 'Hola desde PHP'); // Recuperar el valor $valor = $redis->get('saludar'); echo "El valor almacenado es: $valor"; } catch (Exception $e) { echo "Error al conectar con Redis: " . $e->getMessage(); }
Es bien sencillo:
Primero instanciamos Redis creando un objeto cliente de Redis.
A continuación, conectamos al servidor con nuestro nombre de host 127.0.0.1 y el puerto por defecto de Redis.
Almacenamos un valor mediante set() con la clave “saludar”.
Recuperamos el valor de “saludar” mediante get().
También hemos hecho uso de un bloque try-catch por si la conexión con Redis falla.
Hasta aquí algo sencillito. Pero si recuerdas, como dije al principio del artículo, Redis también admite como tipo de datos listas, sets, etc.
¿Probamos alguno?
Dado que este articulo ya es bastante largo y para no hacerlo más largo aún y que no resulte pesado, prefiero dividirlo en dos partes. Así que en un próximo articulo hablare sobre los tipos de datos de Redis y funciones útiles de la biblioteca de Redis para PHP.
Hasta entonces, un saludo y espero que te haya resultado útil😉
Sobre el autor
Este artículo está publicado bajo una licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional . Puedes compartirlo y adaptarlo, incluso con fines comerciales, siempre que cites al autor y mantengas esta misma licencia.