🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Configuración de Redis para caché en PrestaShop

Actualizado el 19 de noviembre de 2025

[INFO] Este artículo está dirigido a administradores de sistemas, desarrolladores y propietarios de tiendas PrestaShop que buscan optimizar el rendimiento de su ecommerce mediante la implementación de Redis como sistema de caché. Se asume un conocimiento básico de terminal Linux y acceso SSH al servidor.

El rendimiento de una tienda online es un factor crítico para la conversión y el SEO. En PrestaShop, la base de datos suele convertirse en el cuello de botella principal, especialmente cuando el catálogo de productos, las categorías y los clientes crecen. Cada petición de página implica múltiples consultas SQL: obtener la configuración del idioma, las categorías activas, los productos destacados, los precios, los stocks... Sin una capa de caché eficiente, el servidor de base de datos (MySQL/MariaDB) se satura, aumentando el tiempo de carga (TTFB) y degradando la experiencia del usuario.

Aquí es donde entra Redis. Redis es un almacén de estructura de datos en memoria, de código abierto, que funciona como base de datos, caché y broker de mensajes. Al implementar Redis PrestaShop, trasladamos las consultas más pesadas y las variables de configuración a la memoria RAM del servidor, reduciendo drásticamente la latencia y la carga en el disco. Este artículo te guiará paso a paso en la configuración de caché Redis ecommerce para maximizar el rendimiento base de datos PrestaShop.

¿Por qué Redis para PrestaShop?

PrestaShop incluye desde su versión 1.7 soporte nativo para varios sistemas de caché, siendo Redis el más potente y recomendado. A diferencia de la caché de archivos (File System), Redis opera en memoria, lo que ofrece:

  • Velocidad extrema: Las lecturas y escrituras en RAM son órdenes de magnitud más rápidas que en disco.
  • Persistencia opcional: Puedes configurar Redis para que vuelque los datos a disco periódicamente, evitando pérdidas tras un reinicio del servidor.
  • Gestión de TTL (Time-To-Live): Redis permite expirar claves automáticamente, ideal para la caché de consultas que se invalidan con frecuencia.
  • Colas y sesiones: Además de caché, Redis puede gestionar las sesiones de usuario y las colas de procesos asíncronos (como la generación de imágenes o la indexación).

Requisitos Previos

Antes de comenzar, asegúrate de tener:

  1. Acceso root o sudo al servidor Linux (Ubuntu/Debian, CentOS/AlmaLinux).
  2. PrestaShop 1.7.x o 8.x instalado.
  3. PHP con la extensión php-redis (o php-pecl-redis).
  4. Servidor Redis instalado y en ejecución.

Instalación de Redis y la Extensión PHP

Instalación de Redis Server

El proceso varía ligeramente según la distribución:

En Ubuntu/Debian:

sudo apt update
sudo apt install redis-server -y
sudo systemctl enable redis-server
sudo systemctl start redis-server

En CentOS/RHEL/AlmaLinux:

sudo yum install epel-release -y
sudo yum install redis -y
sudo systemctl enable redis
sudo systemctl start redis

Instalación de la Extensión PHP (php-redis)

Para PHP 7.4/8.x en Ubuntu/Debian:

sudo apt install php-redis -y
sudo systemctl restart php8.x-fpm  # Ajusta la versión de PHP

Para PHP 7.4/8.x en CentOS/AlmaLinux (usando Remi):

sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo yum --enablerepo=remi-php80 install php-redis -y  # Cambia php80 por tu versión
sudo systemctl restart php-fpm

Verifica que la extensión está cargada:

php -m | grep redis

Deberías ver redis en la salida.

Configuración Inicial de Redis Server

Aunque la configuración por defecto funciona, es recomendable ajustar algunos parámetros para un entorno de producción.

Edita el archivo /etc/redis/redis.conf (o /etc/redis.conf):

  1. Persistencia (RDB/AOF): Para caché pura, la persistencia no es estrictamente necesaria, pero si usas Redis para sesiones, habilita RDB:

    save 900 1
    save 300 10
    save 60 10000
    
  2. Memoria máxima: Define un límite para evitar que Redis consuma toda la RAM. Por ejemplo, para un servidor con 16GB de RAM, asigna 4GB:

    maxmemory 4gb
    
  3. Política de expulsión: Cuando se alcanza maxmemory, Redis eliminará claves según esta política. Para caché, la más segura es:

    maxmemory-policy allkeys-lru
    

    Esto eliminará las claves menos recientemente usadas (LRU).

  4. Seguridad básica: Si Redis solo escucha en localhost (127.0.0.1), no necesitas contraseña. Si lo expones a la red, establece una:

    requirepass TuClaveSuperSegura123
    

    [WARNING] No uses contraseñas débiles. Redis es un servicio muy atacado en entornos cloud.

Reinicia Redis para aplicar los cambios:

sudo systemctl restart redis

Configuración de PrestaShop para Usar Redis

PrestaShop permite configurar Redis desde el back office o mediante archivos de configuración. La forma más fiable es mediante el archivo app/config/parameters.php.

Edita el archivo parameters.php de tu instalación de PrestaShop:

// app/config/parameters.php
<?php
return [
    'parameters' => [
        // ... otros parámetros ...
        'ps_cache_enable' => true,
        'ps_caching' => 'CacheRedis',
        'redis_server' => '127.0.0.1',  // IP del servidor Redis
        'redis_port' => 6379,           // Puerto por defecto
        'redis_password' => '',         // Déjalo vacío si no usas contraseña
        'redis_prefix' => 'ps_',        // Prefijo para las claves (útil si tienes múltiples tiendas)
        'redis_database' => 0,          // Base de datos Redis (0-15)
    ],
];

[TIP] Si tu servidor Redis está en un host diferente o requiere autenticación, completa los campos redis_server, redis_port y redis_password con los valores correctos.

Configuración desde el Back Office

También puedes configurarlo desde el panel de administración:

  1. Ve a Parámetros Avanzados > Rendimiento.
  2. En la sección Caché, selecciona Usar caché.
  3. En Sistema de almacenamiento en caché, elige Redis.
  4. Introduce los datos de conexión: servidor, puerto, contraseña y base de datos.
  5. Guarda la configuración.

Verificación del Funcionamiento

Tras guardar la configuración, es fundamental verificar que Redis está siendo utilizado.

1. Comprobar conexión desde PrestaShop

Instala un módulo como "Redis Manager" (de terceros) o simplemente revisa los logs de Redis:

sudo tail -f /var/log/redis/redis-server.log

Deberías ver conexiones entrantes desde la IP de tu servidor web.

2. Monitorear estadísticas de Redis

Usa el cliente redis-cli para ver el uso de memoria y las operaciones:

redis-cli
127.0.0.1:6379> INFO stats

Observa los campos keyspace_hits y keyspace_misses. Una alta tasa de aciertos (hits) indica que la caché está funcionando correctamente.

3. Probar con una herramienta externa

Opcionalmente, puedes usar la herramienta redis-commander o una interfaz web como RedisInsight para navegar visualmente por las claves generadas por PrestaShop.

Optimización Avanzada del Rendimiento de Base de Datos

La caché de Redis no solo almacena consultas SQL. PrestaShop también cachea:

  • Configuración general: Tabla ps_configuration.
  • Traducciones: Cadenas de idioma.
  • Resultados de consultas complejas: Listados de productos, categorías, fabricantes.
  • Módulos específicos: Muchos módulos de terceros (como los de precios o stock) se benefician enormemente.

Ajuste de la Duración de la Caché (TTL)

Puedes modificar el tiempo de vida de la caché desde el back office en Parámetros Avanzados > Rendimiento > Caché. Un valor típico para una tienda con actualizaciones frecuentes de stock es de 86400 segundos (1 día). Para tiendas más estáticas, puedes subirlo a 604800 (1 semana).

Uso de Redis para Sesiones

Redirigir las sesiones de PHP a Redis libera aún más carga de la base de datos. Para ello, modifica el archivo php.ini:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?auth=TuClaveSuperSegura123&prefix=PS_SESSION_"

[WARNING] Si decides mover las sesiones a Redis, asegúrate de que la persistencia de Redis esté habilitada (RDB/AOF). De lo contrario, al reiniciar Redis, todos los usuarios perderán su sesión.

Resolución de Problemas Comunes

Error: "Cannot connect to Redis"

  • Causa: Redis no está corriendo o el firewall bloquea el puerto.
  • Solución: Verifica sudo systemctl status redis. Asegúrate de que el puerto 6379 esté abierto solo para localhost (iptables/ufw).

Error: "Redis server went away"

  • Causa: El servidor Redis se ha quedado sin memoria o ha sido reiniciado.
  • Solución: Aumenta maxmemory en redis.conf. Habilita la persistencia para evitar pérdidas de datos.

La caché no se invalida correctamente

  • Causa: El prefijo de caché (redis_prefix) no coincide con el configurado en PrestaShop.
  • Solución: Verifica que el prefijo en parameters.php sea el mismo que usan tus módulos. Si tienes dudas, limpia toda la caché de Redis: redis-cli FLUSHALL.

Conclusión

Implementar caché Redis ecommerce en PrestaShop es una de las mejoras de rendimiento más efectivas que puedes realizar. Reduce la latencia de las consultas, disminuye la carga del rendimiento base de datos PrestaShop y permite que tu tienda escale sin necesidad de costosas infraestructuras. La configuración, aunque requiere unos pocos pasos técnicos, es directa y los beneficios son inmediatos.

Recuerda monitorear periódicamente el uso de memoria de Redis y ajustar maxmemory según el crecimiento de tu tienda. Una vez que hayas probado la diferencia entre una tienda con y sin Redis, no querrás volver atrás.

[TIP] Para un rendimiento óptimo, considera también usar Redis para el almacenamiento de la caché de imágenes y la gestión de colas de trabajos (por ejemplo, con RabbitMQ o la propia cola de Redis).

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel