Configurar Redis como caché de objetos

¿Qué es Redis?

Simplificando, Redis es una base de datos que almacena la información en memoria, lo que lo hace especialmente eficiente a la hora de escribir y leer información.

Por costes de implementación, el uso de Redis era habitual en proyectos de gran tamaño, pero algo muy poco frecuente para el resto de proyectos pequeños o medianos, menos aún en entornos en los que no se dispusiese de servidores dedicados o infraestructura a medida.

Los avances en el hosting flexible tipo cloud hacen que esto ya no sea un impedimento, pudiendo disponer de una pequeña instancia de Redis propia para su uso como caché de objetos, obteniendo los beneficios de mejora de rendimiento al que hasta hace poco solo se tenía acceso con infraestructura a medida o servicios especializados, con los elevados costes que ello conllevaba.

Es importante tener en cuenta que el uso de Redis consiste en dos partes: por un lado el motor, Redis, y por otro la capa que hace de conector, que por norma general será un plugin de caché que incluya esta vía de conexión.

Activar o no activar la caché de objetos vía Redis

Hay que entender que no todos los proyectos se beneficiarán de Redis. Si no tienes consultas SQL pesadas o lentas, Redis no aportará nada.

Se podría pensar en activarlo aun así, pero ten en cuenta que la instancia de Redis que se crea se ejecutará en segundo plano todo el tiempo en tu cuenta, consumiendo memoria RAM. Por ello, siempre sería importante evaluar si se nota o no mejoría y, en caso negativo, desactivarlo.

Como regla sencilla, una web tipo portafolio o de empresa, con páginas informativas, contacto y similar, no se beneficiará de este sistema y con habilitar un plugin de caché estándar sería suficiente.

Una tienda online o una plataforma de cursos, en cambio, sería un buen ejemplo de un proyecto que podría notar una mejora significativa.

Activando Redis

Todos los planes incluyen soporte de forma gratuita para usar Redis con sistema de caché, la única diferencia es el tamaño de la instancia:

  • Plan Inicia: 16 MB
  • Plan Webmaster: 32 MB
  • Plan Avanza: 64 MB
  • Cuentas en planes multicuenta: 16 MB

A priori puede parecer poco espacio, pero nada más lejos, el objetivo de Redis como caché es almacenar resultados de consultas, datos que ocupan muy poco espacio, por lo que esta capacidad suele ser óptima con respecto a la CPU y memoria que ofrece cada plan de hosting.

Para activar Redis, lo primero que debes hacer es acceder al área de clientes, accede a las opciones del servicio de hosting en el que quieras disponer de esa función, y encontrarás la opción Redis Caché en la sección Herramientas.

Basta con hacer clic en Activar Redis Caché y en pocos segundos estará funcionando.

Recuerda que Redis hace uso continuo de la memoria de tu cuenta, si tras probarlo decides no usarlo, desactívalo por esa misma vía.

Configurando Redis en tu aplicación, web o tienda

Una vez activo verás que aparecen una serie de datos acerca de la instancia, el estado de la misma, tipo de conexión, valor, puerto y espacio asignado, serían todos los datos que necesitarás para completar la configuración.

Configurando Redis con LiteSpeed Cache de WordPress / WooCommerce

  1. Instala y activa el plugin LiteSpeed Cache.
  2. Ve a LiteSpeed Cache > Cache > Object.
  3. Selecciona "Redis" como el método de caché de objetos.
  4. Establece Object Cache en ON.
  5. Method en Redis.
  6. Port sería el puerto, cambia a 0.
  7. En Host, indicamos /tmp/redis.sock
  8. Guarda los cambios y listo.

Configurando Redis en Redis Object Cache de WordPress / WooCommerce

  1. Instala y activa el plugin Redis Object Cache.
  2. Ahora debes editar el fichero wp-config.php de WordPress y añadir:
define('WP_REDIS_SCHEME', 'unix');
define('WP_REDIS_PATH', '/tmp/redis.sock');
define('WP_REDIS_PORT', 0);
define('WP_REDIS_MAXTTL', 360);
  1. Accede a la configuración de Redis Object Cache, comprueba que Redis aparece en verde y completa la activación.

Configurando Redis en PrestaShop

Al igual que en el resto de aplicaciones, necesitamos un módulo de caché o específico que implemente Redis, lamentablemente no conocemos ninguno con desarrollo activo que sea gratuito, por lo que tendrías que usar alguno de los disponibles en la tienda oficial, como por ejemplo: Redis Cache de Community developer.

Únicamente importante que el módulo elegido soporte conexión a Redis vía Unix Socket.

Configurando Redis en Laravel

  1. Abre el archivo .env de tu proyecto Laravel.
  2. Configura Redis de la siguiente manera:
REDIS_CLIENT=phpredis
REDIS_SCHEME=unix
REDIS_PATH=/tmp/redis.sock
REDIS_PORT=0
  1. En config/database.php, asegúrate de que la configuración de Redis sea:
'redis' => [
    'client' => env('REDIS_CLIENT', 'phpredis'),
    'default' => [
        'scheme' => env('REDIS_SCHEME', 'tcp'),
        'path' => env('REDIS_PATH', '/tmp/redis.sock'),
        'port' => env('REDIS_PORT', 0),
    ],
],
  1. Limpia la caché de configuración: php artisan config:clear

Configurando Redis en otro plugin de caché

De la información que aparece en la tabla, tipo de conexión, valor y puerto son los únicos datos que necesitas para conectar cualquier sistema de caché a Redis y serán siempre los mismos:

  • Tipo de conexión: Unix socket
  • Valor: /tmp/redis.sock
  • Puerto: 0

Configurar Redis en varias webs en el mismo hosting

Si tienes varias webs alojadas en el mismo hosting, es importante tener en cuenta lo siguiente:

  1. Cada web debe utilizar un identificador de base de datos diferente para Redis. Esto asegura que los datos en caché de una web no interfieran con los de otra, por ejemplo en LiteSpeed Cache, este dato se indica en ID de base de datos Redis y sería un valor entre 0 y 15.
  2. Se recomienda activar Redis solo en las webs que realmente lo necesiten. Como mencionamos anteriormente, no todos los sitios se beneficiarán del uso de Redis, y activarlo innecesariamente puede consumir recursos sin aportar beneficios.
  3. En Redis, el identificador de base de datos es numérico. Por defecto, Redis proporciona 16 bases de datos numeradas del 0 al 15. Para configurar un identificador único para cada web.

LiteSpeed Cache

Si usas LiteSpeed Cache en WordPress, cambiarías el campo "Redis Database ID" a un valor diferente, si tienes 0 en una web, pondrías 1 en la otra y así sucesivamente.

Redis Object Cache

Si en cambio usas Redis Object Cache en WordPress, el cambio se haría desde el fichero wp-config.php de cada web, indicando un identificador diferente para cada una, por medio de la directiva:

define('WP_REDIS_DATABASE', 1);

Por defecto, el valor es 0, por lo que si no se modifica, todos los sitios usarán la misma base de datos de Redis.

Otras directivas de configuración disponibles en la documentación oficial de Redis Object Cache.

Preguntas frecuentes

¿Qué ocurre si excedo el espacio de la instancia de Redis?

No habría ningún problema, tenemos configurado Redis para que purgue los datos más antiguos para dar cabida a los nuevos. Si bien es cierto que si la purga es continua, será contraproducente para optimizar el rendimiento, y deberás o desactivarlo, o subir a un plan superior con más memoria.

¿Puedo usar Redis para otros propósitos además de caché?

Aunque Redis es muy versátil y puede usarse para diversas funciones como colas de mensajes o almacenamiento de sesiones, en este entorno de hosting está optimizado y configurado específicamente para su uso como caché de objetos.

¿Cómo puedo monitorear el rendimiento de Redis?

La mayoría de los plugins de caché para WordPress y otras plataformas ofrecen estadísticas básicas sobre el uso de Redis.