Cómo Usar Redis con PHP y MariaDB en Ubuntu

Para esto ya debemos tener instalado el lenguaje de programación PHP y la base de datos MariaDB en nuestro sistema operativo Ubuntu.

Estoy usando un servidor Apache 2 para este tutorial.

Así que procura primero tener en orden tu entorno para poder usar la base de datos en memoria Redis.

1. Instalamos Redis

Sigue los siguientes pasos:

1.1 Actualiza el repositorio de paquetes de Ubuntu

Actualiza el repositorio de Ubuntu:

sudo apt update

Aquí instalaremos el paquete redis-server y php-redis.

El paquete redis-server instala el servidor Redis y el paquete php-redis instala la extensión de PHP para redis:

sudo apt install redis-server php-redis

1.2 Crea un archivo de configuración

Lo hacemos con permisos de root (sudo):

sudo nano /etc/redis/redis.conf

Dentro del archivo redis.conf agrega lo siguiente:

# Redis configuration file example

bind 127.0.0.1
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300

daemonize yes
supervised systemd

pidfile /var/run/redis/redis-server.pid
loglevel notice
logfile /var/log/redis/redis-server.log

databases 16

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes
rdbchecksum yes

dir /var/lib/redis

requirepass ""

appendonly no

Guarda con CTRL + O y ENTER

Cierra el editor nano con CTRL + X

1.3 Crea estas carpetas (Si no las tienes)

Estas 5 carpetas:

sudo mkdir -p /var/lib/redis
sudo chown redis:redis /var/lib/redis
sudo mkdir -p /var/log/redis
sudo chown redis:redis /var/log/redis

1.4 Habilita Redis

Activamos Redis en nuestro Ubuntu:

sudo systemctl enable redis-server

Synchronizing state of redis-server.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable redis-server
Created symlink /etc/systemd/system/redis.service → /usr/lib/systemd/system/redis-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/redis-server.service → /usr/lib/systemd/system/redis-server.service.

1.5 Inicia el Servidor de Redis

Ejecutando el siguiente comando:

sudo systemctl start redis-server

1.6 Verifica que Redis funcione

Este comando te debe devolver un PONG:

redis-cli ping

PONG

Si devuelve PONG tu Redis ha sido instalado correctamente.

2. Configuramos MariaDB

Sigue los siguientes pasos:

2.1 Ingresa a MariaDB

Ejecuta este comando (te pedirá que coloques tu password):

mysql -u root -p

Enter password:

Si no recuerdas tu password de MariaDB puedes seguir este tutorial.

2.2 Crea una base de datos y tabla

Creamos una base de datos llamada ejemplo_crud

Seleccionamos la base de datos ejemplo_crud y en ella creamos una tabla llamada usuarios:

# Crea la base de datos y selecciónala 
CREATE DATABASE ejemplo_crud;
USE ejemplo_crud;

# Crea una tabla 'usuarios' en la base de datos 
CREATE TABLE usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL,
  email VARCHAR(100) NOT NULL UNIQUE
);

Las consultas SQL anteriores las puedes copiar y pegar en la shell de MariaDB (No olvides quitarle los comentarios) y presionar ENTER para ejecutarlas:

MariaDB [(none)]> USE ejemplo_crud;
Database changed
MariaDB [ejemplo_crud]> 
MariaDB [ejemplo_crud]> CREATE TABLE usuarios (
    ->   id INT AUTO_INCREMENT PRIMARY KEY,
    ->   nombre VARCHAR(100) NOT NULL,
    ->   email VARCHAR(100) NOT NULL UNIQUE
    -> );
Query OK, 0 rows affected (0,062 sec)

MariaDB [ejemplo_crud]>

2.3 Sal de MariaDB

Con el siguiente comando:

MariaDB [ejemplo_crud]> exit
Bye

3. Tareas CRUD

Vamos a realizar las 4 operaciones básicas de todo sistema llamada CRUD (Create, Read, Update y Delete).

3.1 Crea un archivo PHP

Creamos un archivo llamado app.php con el editor nano:

sudo nano /var/www/html/app.php

Dentro del archivo colocamos el siguiente código:

<?php
$mysqli = new mysqli("localhost", "root", "tu-password", "ejemplo_crud"); // Ajusta los datos

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

$accion = $_GET['accion'] ?? '';

switch ($accion) {
    case 'crear':
        $nombre = $_POST['nombre'];
        $email = $_POST['email'];
        $mysqli->query("INSERT INTO usuarios (nombre, email) VALUES ('$nombre', '$email')");
        echo "Usuario creado";
        break;

    case 'leer':
        $id = $_GET['id'];
        $cacheKey = "usuario:$id";
        
        if ($redis->exists($cacheKey)) {
            echo "Desde Redis: " . $redis->get($cacheKey);
        } else {
            $res = $mysqli->query("SELECT * FROM usuarios WHERE id=$id");
            $user = $res->fetch_assoc();
            if ($user) {
                $json = json_encode($user);
                $redis->set($cacheKey, $json); // Guarda sin expiración
                echo "Desde MySQL: " . $json;
            } else {
                echo "No encontrado";
            }
        }
        break;

    case 'actualizar':
        $id = $_POST['id'];
        $nombre = $_POST['nombre'];
        $email = $_POST['email'];
        $mysqli->query("UPDATE usuarios SET nombre='$nombre', email='$email' WHERE id=$id");
        $redis->del("usuario:$id"); // Borrar cache
        echo "Usuario actualizado";
        break;

    case 'eliminar':
        $id = $_POST['id'];
        $mysqli->query("DELETE FROM usuarios WHERE id=$id");
        $redis->del("usuario:$id");
        echo "Usuario eliminado";
        break;

    default:
        echo "Acción no válida";
}
?>

3.2 Crear registro (Create)

Creamos un nuevo usuario:

curl -X POST -d "nombre=Ana&email=ana@test.com" "http://localhost/app.php?accion=crear"

Usuario creado

3.3 Leer registro (Read)

Podemos ver el usuario guardado en MySQL abriendo la ruta http://localhost/app.php?accion=leer&id=1 en nuestro navegador (Si estas en un VPS cambia localhost por tu IP o dominio):

Registro creado en MariaDB

Si vuelves a actualizar te aparecerán los datos obtenidos desde Redis:

Datos obtenidos desde Redis

3.3.1 Ver los datos en Redis

Para estar más seguros de que los datos se guardaron correctamente en Redis.

Podemos verlos ingresando al cliente de Redis:

# Ingresamos a Redis 
redis-cli

# Listamos las claves almacenadas 
127.0.0.1:6379> keys *
1) "usuario:1"

# Mostramos el valor de nuestra clave 
127.0.0.1:6379> get usuario:1
"{\"id\":\"1\",\"nombre\":\"Ana\",\"email\":\"ana@test.com\"}"

# Salimos de Redis 
127.0.0.1:6379> exit 

3.3.2 Ver los datos en la terminal

También puedes ver los datos en la terminal así:

$ curl "http://localhost/app.php?accion=leer&id=1"

Desde Redis: {"id":"1","nombre":"Ana","email":"ana@test.com"}n

3.4 Actualizar registro (Update)

Ejecutamos el siguiente comando:

curl -X POST -d "id=1&nombre=Ana Actualizada&email=ana@nuevo.com" "http://localhost/app.php?accion=actualizar"

Usuario actualizado

Puedes leer el registro actualizado como te explique en el punto 3.3 Leer registro (Read).

3.5 Eliminar registro (Delete)

Y para eliminar ejecutamos el comando:

curl -X POST -d "id=1" "http://localhost/app.php?accion=eliminar"

Usuario eliminado

Si intentas leer el registro como te explique en el punto 3.3 Leer registro (Read) verás que ya no aparece, en su lugar verás el texto No encontrado.

3.5.1 Verificar en Redis

Si revisamos en Redis tampoco aparece el registro:

redis-cli

127.0.0.1:6379> keys *
(empty array)

127.0.0.1:6379> get usuario:1
(nil)

127.0.0.1:6379> exit

Asi de fácil puedes usar Redis con PHP y MySQL en Ubuntu.

Conclusión

Hacer esta integración parece un desafío, pero no es así.

Es simplemente tu camino de aprendizaje.

Una vez que comprendas cómo se hace, podrás crear proyectos más complejos con Redis, PHP y MySQL.

Síguenos en nuestras Redes Sociales y demás canales digitales para que no te pierdas nuestros próximos contenidos.