Articles

Installer et configurer Redis pour WordPress en 5 minutes

Introduction

Redis est une base de données clé-valeur open-source développé par Salvatore Sanfilippo qui est sponsorisé par VMWare. Il est utilisé par des sites tels que Twitter, GitHub, Pinterest, Snapchat, Craigslist, Digg, StackOverflow et Flickr. Redis permet de garder en mémoire les requêtes mySQL. C’est un système de mise en cache extrêmement simple à mettre en oeuvre et qui peut apporter d’importants gains de performance. Bien que tous les sites soient différents et ne réagiront pas de la même façon, il n’est ainsi pas rare de voir le temps de chargement d’une page divisé par deux grâce à l’utilisation de Redis.

Memcached est un équivalent de Redis. Si vous vous demandez lequel utiliser, il vaut mieux opter pour Redis. Pour plus d’infos, voir cette réponse extrêmement détaillée sur StackOverflow.

Comment ça marche ?

A chaque fois qu’une page est chargée sur votre site lors d’une visite, une requête vers la base de données MySQL est effectuée. Redis retient ces requêtes, on dit qu’il les met en cache. Par la suite, si un autre visiteur charge la même page, la requête vers la base de données étant la même, le résultat de la requête est donné par Redis directement depuis la mémoire sans interroger la base de données. Le temps de chargement s’en trouve considérablement réduit et les ressources du serveurs sont moins solicitées. Si une valeur est mise à jour dans la base de données (un nouvel article est crée par exemple), la valeur pour cette requête est invalidée puis mise à jour.

Note

Avant d’installer Redis, il est recommandé de backuper Wordrpess ou d’essayer d’abord sur un serveur de test.

Installer Redis

Rien de plus simple, sur Ubuntu :

sudo apt-get install redis-server php5-redis

 

Configurer Redis

Redis peut être utilisé comme cache mais aussi en tant que base de données NoSQL. Ici nous souhaitons l’utiliser en tant que cache et allons donc procéder à une modification de sa configuration.

sudo nano /etc/redis/redis.conf

On ajoute ces deux lignes à la fin du fichier

On peut ensuite vérifier que Redis fonctione en tappant  redis-cli puis ping  qui doit normalement répondre pong

Editer wp-config.php

Il faut ensuite ajouter une ligne dans le fichier wp-config.php qui se trouve à la racine du site WordPress. Dans /var/www/monsite par exemple.

nano /var/www/monsite/wp-config.php

A la fin de la section Authentication Unique Keys and Salts on ajoute cette ligne  define('WP_CACHE_KEY_SALT', 'monsite.com');

Il est possible de remplacer monsite.com par n’importe quel texte mais mettre l’URL du site est une pratique courante. L’important étant d’avoir une CACHE_KEY différente pour chaque site, au cas ou vous auriez plusieurs WordPress sur le même serveur.

Il faut également ajouter cette ligne  define('WP_CACHE', true); si elle n’est pas déjà présente dans wp-config.php, ce qui est fort probable si un plugin de cache est déjà installé. Il l’aura alors lui-même écrite dans wp-config.php.

On va ensuite relancer Redis et Apache :

 

Installer le plugin Redis pour WordPress

Il faut ensuite installer à plugin qui va permettre à WordPress d’utiliser Redis. Pas la peine de passer trop de temps à chercher, le choix se porte sur le plus populaire, il y’en à d’autres mais celui fonctionne très bien.

Après l’installation il n’y a plus qu’à activer le plugin puis se rendre dans ses réglages et cliquer sur « Enable Object Cache ». Voici à quoi ressemble l’écran de configuration du plugin après l’activation du Object Cache :

Configuration Redis et WordPress avec le plugin Redis Object Cache

Vérifier que l’installation fonctionne

Pour être sur que les requêtes sont bien mises en cache, on va utiliser cette commande  redis-cli monitor et charger une page du site ne la visitant depuis un navigateur. Redis-cli devrait afficher quelque chose comme ça :

 

Conclusion

C’est tout ! Redis est installé et configuré. Il ne reste plus qu’à faire un test de temps de chargement à l’aide de Lighthouse, GTmetrix, Pingdom, webpagetest.org ou votre outil de mesure préféré pour observer le gain sur le temps de chargement du site.

 

Et si besoin de vider le cache de Redis, la commande est  redis-cli flushall