Redis Object Cache para WordPress

Redis object Cache para WordPress

WordPress Redis Object Cache puede aumentar el rendimiento de tu sitio web de WordPress, pero no todos los sitios web lentos pueden beneficiarse de ello.

Aprende cuándo Redis es bueno para WordPress y cuándo no, cómo funciona y cómo instalarlo en tus webs WordPress.

Tabla de contenidos

¿Redis es bueno para WordPress?

Antes de tomar una decisión entendamos que significa usar Redis para la cache de objetos.

¿Qué es la caché de objetos de Redis?

Redis es un almacén de valor clave de código abierto que puede funcionar como almacén en memoria y como caché. WordPress utiliza esta caché de objetos para ahorrar tiempo almacenando en la memoria los resultados de la consulta a la base de datos.

La caché de objetos no es lo mismo que la caché HTML. Los complementos de WordPress como WP-Super-Cache, WP-Rocket, etc. son complementos de caché HTML, mientras que Object Cache almacena el contenido de la base de datos.

Mientras que los complementos de Page Cache funcionan almacenando en caché la página HTML para ahorrar tiempo al omitir el proceso de PHP, Object Cache funciona almacenando datos en caché para omitir las consultas a la base de datos.

¿Cómo funciona Object Cache con WordPress?

El almacenamiento en caché de objetos almacena los resultados de las consultas a la base de datos que se han solicitado. Posteriormente, los sirve más rápido la próxima vez que un usuario los solicite. De esta manera, tu base de datos no tiene que ser consultada nuevamente.

WordPress también tiene Object Cache incorporado con la clase Core WP_Object_Cache. El problema es que este almacenamiento en caché de objetos en WordPress no es persistente por defecto.

Esto significa que los objetos almacenados en caché solo se almacenan mientras dura el proceso de generación de páginas. Esto es bastante ineficiente en la práctica a menos que instale un mecanismo de almacenamiento en caché persistente como Redis Object Cache.

¿Necesito Redis en WordPress?

Si una de las siguientes situaciones es tu caso, eres candidato para sacar buen partido de Object Redis Cache:

  • No puedes almacenar en caché el contenido de tu sitio de WordPress porque cambia según el usuario. En estos casos, suele ser poco útil usar los plugin de caché HTML.
  • El tiempo de construcción de las páginas es lento debido a un numero elevado de consultas contra la base de datos. Con el almacenamiento en caché de objetos, la base de datos se puede consultar con mucha menos frecuencia. Además, recuperar contenido de Redis es mucho más rápido que enviar consultas a la base de datos.
  • La Base de Datos es lo suficientemente rápida pero se da una alta concurrencia de usuarios.

¿Redis acelera WordPress?

¡No siempre!

Si según el anterior apartado, eres un candidato para usar Redis, a continuación te damos una lista de todos los requisitos que se deben cumplir para que Redis Object Cache te sea realmente beneficioso:

  1. No se puede usar un plugin de caché de página estática HTML o no cubres todas tus páginas. Esto es común cuando tu sitio WordPress interactúa o cambia según el usuario. Ejemplos: sitios web de comercio electrónico que usan WooCommerce, sitios de membresía, sitios web de redes sociales o foros que usan BBPress, BuddyPress, etc.
  2. El Tiempo de Generación de la Página es alto (por ejemplo, más de 0,5 segundos) o puede ser alto debido a la concurrencia de usuarios.
  3. El tiempo dedicado a las consultas a la base de datos es alto en comparación con el tiempo de generación de páginas, O la cantidad de consultas es alta (por ejemplo, más de 200 consultas), por lo que una eventual concurrencia de usuarios puede afectar el rendimiento.

En la siguiente sección, te mostraremos cómo inspeccionar tu WordPress y analizar el tiempo de generación de página.

Cómo analizar el tiempo de generación de la página de WordPress

Para poder analizar el tiempo de generación de página en cada página de tu web WordPress e identificar las fuentes de los problemas de rendimiento, instala el complemento gratuito Query Monitor de John Blackbourn.

Este complemento, además del tiempo de generación de la página, muestra cuántas consultas a la base de datos se ejecutaron para generar la página y cuánto tiempo tomó.

En el ejemplo que se muestra a continuación, podemos identificar las métricas clave cuando trabajamos sin Redis Object Cache:

  • Tiempo de generación de página: 0.2926s
  • Consultas a base de datos: Total: 132
  • Caché de objetos: complemento no instalado
Tiempo de generación de la página de Query Monitor. Consultas e información de caché de objetos
Un tiempo de generación de página de 0,2962 s y 132 solicitudes de base de datos, sin Redis Object Cache.

¿Redis Object Cache nos ayudará a reducir el tiempo de generación de páginas?

En nuestro caso, tenemos 132 consultas de base de datos, lo que parece mucho, pero el tiempo que necesita nuestro servidor para resolver estas consultas es muy bajo: 0.0193 segundos. En tal caso, Redis Cache solo podría ayudarnos a reducir esos 0.0193 segundos. No vale la pena si no hay alta concurrencia.

Si el tiempo de consultas a la base de datos es bajo, Redis Object Cache solo puede ayudarnos en casos de alta concurrencia.

Verificar si Redis Object Cache ahorra tiempo al almacenar en caché mis solicitudes de base de datos

Digamos que tenemos alta concurrencia y queremos atender consultas desde Redis, evitando cuellos de botella en nuestra Base de datos:

Continuando con nuestro caso, verifiquemos el Tiempo de generación de página cuando se ejecuta Redis Object Cache.

Tiempo de generación de páginas, consultas de bases de datos y resultados de rendimiento de caché de objetos de Redis
Un tiempo de generación de página de 0,2736 s y 31 solicitudes de base de datos, con Redis Object Cache.

Los resultados con Redis Object Cache que se muestran arriba nos dicen:

  • Tiempo de generación de página: 0.2736s
  • Consultas de base de datos: Total: 31
  • Caché de objetos: 99,3 % de aciertos

Hemos reducido nuestro tiempo de generación de páginas a menos de 20 milisegundos. Es un valor demasiado bajo para tenerlo en cuenta, pero las consultas a la base de datos disminuyeron de 132 a 31, y esto es lo que nos ayudará en caso de alta concurrencia.

Conclusión:

En este caso, Redis Object Cache solo nos ayuda bajo la concurrencia de usuarios. El impacto en el tiempo de generación de páginas es bajo, pero Redis Object Cache funciona bien al reducir la carga de la base de datos.

¿Cómo implemento el caché de Redis en WordPress?

Para usar Redis para el almacenamiento en caché de objetos en sitios de WordPress, debe comenzar instalando y configurando un servicio de Redis. Luego, debe instalar la extensión PHP Redis, seguida del complemento Redis Object Cache.

La ruta más fácil para instalar Redis Object Cache para WordPress

Si su servidor está alojado en Wetopi, instalar, habilitar y configurar Redis Object Cache es un proceso simple.

1. Agregue el complemento Redis Object Cache Wetopi

Ve a tu sitio de Wetopi y abre la pestaña Complementos que encontrarás en la parte inferior, en la sección «Opciones del sitio»:

Complementos Wetopi con Redis Object Cache

Una vez que haga clic en Redis Object Cache, una ventana flotante le mostrará los detalles del complemento de Redis Object Cache:

Habilitar caché de objetos de Redis para WordPress

NOTA: Los servidores pequeños se escalan a Medianos para adaptarse al servicio Redis.

Una vez que habilite el complemento Redis, sus servidores Wetopi se iniciarán con una imagen de instancia que ejecuta el servicio Redis y el motor PHP con su módulo Redis habilitado.

2. Instala y configura el plugin Redis Object Cache con un solo clic

El segundo y último paso instalará y configurará el plugin Redis Object Cache para que tu WordPress pueda manejar el almacenamiento de Object Cache.

Con Wetopi esto es un solo clic. Encontrarás esta opción en el menú de tu servidor de WordPress, dentro de la sección de opciones avanzadas:

instale y configure el caché de objetos redis con un solo clic
Haga clic en WP Redis Setup para instalar, activar y configurar de manera óptima el complemento Redis Object Cache

No se requiere ninguna acción adicional.

Para no romper tu web producción durante las pruebas …

Clona tu server producción y crea un entorno «staging» !!!

Clonar un sitio de WordPress con Wetopi es tan fácil como un simple clic.

El proceso de instalación paso a paso de Redis Object Cache para WordPress

Si estás alojado en Wetopi, no necesitas realizar los siguientes pasos. Puedes saltar a la sección «Uso del plugin de caché de objetos de Redis«

1. Instalar y configurar el servicio Redis

Si estás ejecutando una distribución de Ubuntu, sigue este comando:

sudo apt install redis

Configura Redis /etc/redis/redis.conf para que se ejecute lo más rápido posible habilitando la conexión del socket:

# Unix socket.
#
# Specify the path for the Unix socket that will be used to listen for
# incoming connections. There is no default, so Redis will not listen
# on a unix socket when not specified.
#
unixsocket /var/run/redis/redis.sock
unixsocketperm 777

Establece también el límite de memoria, la política de memoria y configure Redis para que funcione únicamente en la memoria sin guardar en el disco (es caché, no necesitamos persistencia).

############################## MEMORY MANAGEMENT ################################

# Set a memory usage limit to the specified amount of bytes.
# When the memory limit is reached Redis will try to remove keys
# according to the eviction policy selected (see maxmemory-policy).

maxmemory 128mb


# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
# is reached. You can select among five behaviors:
#
# volatile-lru -> Evict using approximated LRU among the keys with an expire set.
# allkeys-lru -> Evict any key using approximated LRU.
# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
# allkeys-lfu -> Evict any key using approximated LFU.
# volatile-random -> Remove a random key among the ones with an expire set.
# allkeys-random -> Remove a random key, any key.
# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
# noeviction -> Don't evict anything, just return an error on write operations.
#
# LRU means Least Recently Used
# LFU means Least Frequently Used
#
maxmemory-policy allkeys-lru

...


################################ SNAPSHOTTING  ################################
#
# Save the DB on disk:
#
#   save <seconds> <changes>
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#
#   Note: you can disable saving completely by commenting out all "save" lines.
#
#   It is also possible to remove all the previously configured save
#   points by adding a save directive with a single empty string argument
#   like in the following example:
#
save ""

Puedes reiniciarlo para dejar que todo se configure usando

sudo systemctl restart redis.service

Verifica el estado de Redis con este comando:

sudo systemctl status redis

2. Instala el módulo PHP redis

Si estás ejecutando una distribución Ubuntu o Debian, puedes instalar el módulo Redis con una apt-get install

apt-get update
apt-get install php7.4-redis
phpinfo() que muestra el motor PHP con el módulo «redis» habilitado.

3. Instala el complemento de caché de objetos

Inicia sesión en tu administrador de WordPress y agrega un nuevo complemento. Por ejemplo, busca en Redis y selecciona este complemento específico de Caché de objetos de Redis.

Agregue el complemento Redis Object Cache

Instala y activa el complemento. Luego dirígiete a la configuración de Redis en el menú de tu tablero.

Ahora debes hacer clic en el botón Habilitar caché de objetos. Esto configurará el complemento de Redis usando la configuración predeterminada.

4. Habilita la conexión de socket a Redis para un mejor rendimiento

Si estás ejecutando tu servicio Redis en el servidor junto con su WordPress, el método de conexión de mayor rendimiento es el socket UNIX.

Para configurar nuestro complemento Redis Object Cache para conectarse a través de un socket, debes definir dos constantes en su wp-config.php

define( 'WP_REDIS_PATH', '/var/run/redis/redis.sock' );
define( 'WP_REDIS_SCHEME', 'unix' );

NOTA: modifica la ruta WP_REDIS_PATH para que apunte a tu socket redis real.

Uso del complemento de caché de objetos de Redis

El complemento Redis Object Cache de Till Krüss es muy simple.

Desde tu panel de administración de WordPress, puedes abrir las estadísticas de métricas:

La pestaña Métricas muestra un impresionante tiempo de respuesta de las consultas de Redis: menos de 4 milisegundos

Este complemento también te ofrece la opción de vaciar la memoria caché desde la sección Descripción general:

Cómo vaciar el caché de objetos redis

NOTA: si buscas un complemento de caché de objetos Redis de clase empresarial, hay una versión Pro de este complemento Object Cache Pro.

La caché de vaciado de Redis

Por lo general, no necesitamos vaciar la caché de objetos de Redis. Aún así, a veces es la única opción cuando las operaciones de back-end no funcionan correctamente, como al activar o desactivar un complemento de WordPress.

La opción Flush Cache es solo para el caché de objetos y es una buena práctica para vaciar o purgar todos los demás cachés HTML, por ejemplo, WP-Super-Cache.

Ultimas palabras

El almacenamiento en caché de objetos con Redis puede aumentar la velocidad de generación de páginas de su sitio de WordPress cuando tiene un cuello de botella en la base de datos o una alta concurrencia de usuarios en páginas dinámicas.

En Wetopi nos encanta lograr cosas complejas con soluciones simples y rápidas. Si desea probar su sitio de WordPress con Redis Object Cache, ¡no pierda el tiempo! regístrate y solicita tu Migración gratis.

Resumidamente, somos unos techies apasionados por WordPress que hemos creado Wetopi, un Alojamiento Gestionado WordPress, para minimizar la fricción a la que todo profesional se enfrenta al trabajar y alojar proyectos WordPress.

¿No tienes una cuenta en wetopi?

Incluye servidores desarrollo Gratis.
Sin tarjeta de crédito.

Compara wetopi con tu alojamiento actual

Date de alta, pide una migración y compara.

Hacemos una copia de tu web gratis y sin esfuerzo por tu parte.

Sin letra pequeña.
Sin compromisos.
Sin tarjeta de crédito.