Installer un cache Redis pour accélérer WordPress
WordPress interroge la base à chaque page. Redis met en cache les objets pour la décharger, surtout sur les pages dynamiques et WooCommerce. Voici comment l'installer et le vérifier.
WordPress interroge MySQL ou MariaDB à chaque affichage pour récupérer les réglages, les contenus, les métadonnées et les informations utilisateur. Sur un site complexe, ces requêtes répétées augmentent le temps de réponse du serveur, surtout dans l’administration, sur WooCommerce ou lorsque plusieurs visiteurs sont connectés.
Redis accélère ces traitements en conservant temporairement en mémoire les résultats déjà calculés. WordPress peut alors récupérer certains objets sans solliciter de nouveau la base de données. Ce cache objet persistant réduit la charge SQL et complète efficacement un cache de page classique.
Cache de page et cache objet Redis
Un cache de page enregistre le HTML final généré par WordPress. Lorsqu’un visiteur anonyme demande la même page, le serveur peut lui envoyer directement ce fichier sans réexécuter PHP ni interroger la base. C’est généralement le mécanisme le plus efficace pour un blog ou un site vitrine très consulté.
Le cache objet fonctionne différemment. Redis conserve les résultats de requêtes et les objets manipulés par WordPress : options, métadonnées, résultats de requêtes, sessions applicatives ou données temporaires. Il évite ainsi de répéter certains accès à MySQL ou MariaDB.
Redis apporte surtout un gain sur les pages qui ne peuvent pas être servies entièrement depuis un cache HTML :
- administration WordPress ;
- utilisateurs connectés ;
- comptes clients ;
- catalogues et paniers WooCommerce ;
- espaces membres ;
- multisites ;
- sites fortement personnalisés ou dynamiques.
Les deux caches sont complémentaires. Le cache de page accélère principalement la navigation anonyme, tandis que Redis réduit le travail de la base de données sur les requêtes dynamiques.
Prérequis
Pour installer un cache objet Redis, vous devez disposer des éléments suivants :
- une installation WordPress fonctionnelle ;
- un serveur Redis accessible depuis PHP ;
- un accès à
wp-config.php; - le droit d’installer une extension WordPress ;
- un accès administrateur au serveur ou à l’environnement d’hébergement pour installer
php-redis.
Avant toute modification, effectuez une sauvegarde de wp-config.php. Le cache Redis reste reconstructible et ne remplace jamais une sauvegarde des fichiers ou de la base de données.
Installer et sécuriser Redis
Redis peut déjà être fourni par votre hébergeur, exécuté dans un conteneur ou installé sur le même serveur que WordPress. Sur Debian ou Ubuntu, l’installation s’effectue ainsi :
sudo apt update
sudo apt install redis-server
sudo systemctl enable --now redis-server
redis-cli PING
La dernière commande doit renvoyer :
PONG
Redis ne doit jamais être exposé publiquement sur Internet. Pour une installation locale, configurez-le afin qu’il écoute uniquement sur l’interface de boucle locale :
bind 127.0.0.1 ::1
protected-mode yes
port 6379
Si WordPress et Redis sont dans des conteneurs ou sur des serveurs distincts, utilisez un réseau interne filtré. Ajoutez un mot de passe ou des règles ACL, puis limitez le port 6379 avec le pare-feu. N’ouvrez pas ce port à toutes les adresses.
Après une modification de la configuration :
sudo systemctl restart redis-server
Pour approfondir l’installation, les ACL et la sécurisation réseau, consultez notre guide pour installer Redis sur un VPS.
Installer l’extension PHP Redis
WordPress ne communique pas directement avec le service Redis. PHP doit disposer de l’extension php-redis, aussi appelée phpredis.
Sur Debian ou Ubuntu :
sudo apt install php-redis
sudo systemctl restart php8.3-fpm
Adaptez php8.3-fpm à la version installée. Avec Apache et mod_php, redémarrez plutôt Apache :
sudo systemctl restart apache2
Vérifiez ensuite que PHP charge bien le module :
php -m | grep -i redis
La commande doit afficher redis. Attention : le PHP utilisé en ligne de commande peut avoir une configuration différente de celle de PHP-FPM. Si WordPress ne détecte toujours pas l’extension, vérifiez le fichier php.ini et la version utilisée par le serveur web.
Installer Redis Object Cache dans WordPress
Depuis l’administration WordPress, ouvrez « Extensions », puis « Ajouter une extension ». Recherchez Redis Object Cache, installez-la et activez-la.
Avec WP-CLI, l’opération est plus rapide :
wp plugin install redis-cache --activate
L’extension fournit l’intégration entre l’API de cache objet de WordPress, phpredis et le serveur Redis.
Configurer wp-config.php
Ajoutez les constantes Redis dans wp-config.php, avant la ligne indiquant la fin des modifications :
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_PASSWORD', 'mot-de-passe-long-et-unique');
define('WP_CACHE_KEY_SALT', 'monsite_fr_');
define('WP_REDIS_DATABASE', 0);
Si Redis n’utilise pas de mot de passe sur une connexion locale strictement isolée, omettez WP_REDIS_PASSWORD.
WP_CACHE_KEY_SALT préfixe les clés créées par WordPress. Cette constante est essentielle lorsque plusieurs sites partagent la même instance Redis. Utilisez une valeur unique par site, par exemple le nom de domaine normalisé.
WP_REDIS_DATABASE sélectionne une base logique Redis. Elle apporte une séparation supplémentaire, mais ne remplace pas un préfixe unique. Dans un environnement conteneurisé, remplacez 127.0.0.1 par le nom interne du service Redis.
Évitez d’enregistrer un mot de passe Redis dans un dépôt Git. Sur une infrastructure automatisée, injectez-le depuis une variable d’environnement ou un gestionnaire de secrets.
Activer le drop-in object-cache.php
Dans WordPress, ouvrez « Réglages », puis « Redis ». Cliquez sur « Enable Object Cache ». L’extension installe alors le fichier suivant :
wp-content/object-cache.php
Ce fichier est un drop-in WordPress. Il remplace le cache objet non persistant utilisé par défaut et permet de conserver les objets dans Redis entre plusieurs requêtes HTTP.
L’activation est aussi possible avec WP-CLI :
wp redis enable
wp redis status
Vérifier le fonctionnement
La page de réglages Redis doit afficher le statut « Connected ». Avec WP-CLI, wp redis status doit également confirmer la connexion.
Vous pouvez observer les statistiques Redis :
redis-cli INFO stats
redis-cli INFO memory
Si une authentification est nécessaire :
REDISCLI_AUTH='mot-de-passe' redis-cli INFO stats
Pour visualiser brièvement les commandes reçues :
redis-cli MONITOR
MONITOR est coûteux sur une instance active. Utilisez-le seulement quelques secondes pendant un diagnostic.
Installez éventuellement Query Monitor dans WordPress, puis comparez avant et après l’activation :
- le nombre de requêtes SQL ;
- le temps cumulé passé dans la base ;
- le temps de génération de la page ;
- le taux de succès du cache Redis.
Testez en priorité l’administration, une page de compte et les écrans WooCommerce. Un test limité à une page anonyme déjà servie par un cache HTML ne montrera pas tout l’intérêt de Redis.
WooCommerce et WordPress multisite
WooCommerce génère de nombreuses données personnalisées : panier, compte client, stock, prix ou commandes. Redis peut accélérer les lectures répétées, mais il ne faut pas transformer des données dynamiques en pages HTML statiques sans exclusions appropriées.
Excluez du cache de page le panier, la commande et le compte client. Redis Object Cache respecte les mécanismes de cache objet de WordPress et des extensions, mais une extension mal conçue peut conserver une donnée plus longtemps que prévu. Vérifiez donc les prix, les stocks et les droits utilisateur après déploiement. Notre guide sur l’optimisation de la vitesse d’une boutique complète cette approche pour WooCommerce.
En multisite, attribuez un WP_CACHE_KEY_SALT unique à chaque installation qui partage Redis. Une mauvaise isolation peut provoquer des collisions de clés et des données incohérentes entre sites.
Limiter la mémoire et choisir une politique d’éviction
Redis stocke ses données en mémoire vive. Sans limite, il peut consommer une part excessive de la RAM et pénaliser PHP ou MySQL.
Dans redis.conf, définissez une limite adaptée à votre serveur :
maxmemory 512mb
maxmemory-policy allkeys-lru
La politique allkeys-lru permet à Redis d’éliminer les clés les moins récemment utilisées lorsqu’il atteint sa limite. Elle convient généralement à une instance dédiée au cache.
Redémarrez Redis, puis contrôlez sa consommation :
sudo systemctl restart redis-server
redis-cli INFO memory
La valeur de maxmemory doit tenir compte de la RAM nécessaire à WordPress, PHP-FPM, MySQL ou MariaDB et au système.
Résoudre les problèmes courants
Un statut « Not connected » indique généralement une adresse incorrecte, un port bloqué, un mauvais mot de passe, un service arrêté ou l’absence de phpredis. Contrôlez successivement :
systemctl status redis-server
redis-cli PING
php -m | grep -i redis
wp redis status
Après une modification importante de thème, d’extension ou de configuration, videz le cache :
wp cache flush
Vous pouvez aussi utiliser le bouton « Flush Cache » de Redis Object Cache. Évitez FLUSHALL sur une instance partagée, car cette commande supprime les données de toutes les bases Redis.
Bonnes pratiques de performance
Redis donne les meilleurs résultats dans une pile cohérente : cache de page pour les visiteurs anonymes, cache objet pour les requêtes dynamiques, OPcache pour le bytecode PHP et stockage NVMe pour réduire les latences d’entrée et de sortie.
Surveillez régulièrement la mémoire, les évictions et le taux de succès du cache. Maintenez Redis, PHP et WordPress à jour, conservez le service sur un réseau privé et utilisez des identifiants distincts par environnement.
TalCloud s’inscrit dans cette approche avec des serveurs situés en France, une infrastructure NVMe, une protection Anti-DDoS Netrix, un cadre adapté au RGPD et un support humain. Les offres VPS permettent de construire une architecture WordPress où Redis, PHP et la base de données restent maîtrisés au sein d’une infrastructure française.