Introducción al Problema de Redis en Magento 2
Uno de los dolores de cabeza más comunes para los administradores de tiendas e-commerce desarrolladas en Magento 2 ocurre al integrar Redis como sistema de gestión de caché y sesiones. En ocasiones, el sistema arroja una excepción del tipo NotSupportedException, interrumpiendo por completo el funcionamiento tanto del panel de administración como de la tienda frontal. Este fallo suele manifestarse tras una actualización del servidor, un cambio en la versión de PHP o una mala configuración en el archivo de entorno.
Causas Principales de la NotSupportedException con Redis
Para solucionar este problema de raíz, es fundamental comprender qué lo provoca. Las causas más habituales incluyen:
- Incompatibilidad entre la versión de la extensión de PHP para Redis (phpredis) y la librería utilizada por Magento.
- Configuración incorrecta de los manejadores de caché o sesiones en el archivo
app/etc/env.php. - Uso de sintaxis obsoleta tras actualizar Magento 2 a una versión más reciente.
Método 1: Actualizar y Verificar la Extensión PHP-Redis
El primer paso consiste en asegurar que tu servidor cuenta con una versión de la extensión phpredis compatible con tu versión actual de PHP y Magento.
- Accede a tu servidor vía SSH con privilegios de root o sudo.
- Ejecuta el siguiente comando para verificar qué versión de phpredis tienes instalada:
php -m | grep redis - Si la extensión está desactualizada o ausente, actualízala mediante el gestor de paquetes de tu sistema. Por ejemplo, en Ubuntu con PHP 8.1 ejecuta:
sudo apt-get install php8.1-redis - Reinicia el servidor web (Apache o Nginx) y el servicio PHP-FPM para aplicar los cambios:
sudo systemctl restart php8.1-fpm
Método 2: Corregir la Configuración en el Archivo env.php
Si la extensión es correcta, el problema suele residir en una declaración errónea dentro de la configuración de Magento. Debemos revisar el archivo de entorno.
- Navega hasta la raíz de tu instalación de Magento:
cd /var/www/html/tu-tienda-magento - Abre el archivo de configuración con un editor de texto:
nano app/etc/env.php - Localiza la sección correspondiente a
cacheysession. Asegúrate de que el backend esté apuntando correctamente al manejador de Redis y que los parámetros sean válidos. Un ejemplo correcto sería:
'cache' => ['frontend' => ['default' => ['backend' => 'Cm_Cache_Backend_Redis', 'backend_options' => ['server' => '127.0.0.1', 'port' => '6379', 'database' => '0']]]]
Método 3: Limpiar la Caché y Recompilar la Aplicación
Una vez aplicada la solución correspondiente, es indispensable limpiar los registros residuales y regenerar la compilación para verificar que el error ha desaparecido.
- Ejecuta el comando de limpieza de caché de Magento:
php bin/magento cache:clean - Limpia la caché de Redis directamente desde la consola si persisten los datos corruptos:
redis-cli flushall - Realiza la compilación de inyección de dependencias:
php bin/magento setup:di:compile - Finalmente, despliega los contenidos estáticos:
php bin/magento setup:static-content:deploy -f