⚡ Performance

Redis : cache objet pour CMS

Accélérer WordPress ou PrestaShop avec une instance Redis dédiée : principe, configuration, monitoring, invalidation.

avancé ⏱ 12 min Mise à jour : 2026-04-23

Redis est un cache mémoire clé/valeur extrêmement rapide. Utilisé comme cache objet par WordPress ou PrestaShop, il évite de rejouer des requêtes SQL coûteuses : une fois qu'un résultat est en mémoire, on le ressert en quelques microsecondes. Sur un site WooCommerce bien chargé, activer Redis divise souvent le TTFB par deux ou trois.

Redis chez Datacampus
Nous fournissons une instance Redis dédiée par VPS/VM sur demande (ticket via le ServiceDesk). Chaque instance est isolée, protégée par mot de passe, et nous vous communiquons host + port + mot de passe à la livraison. Pas de Redis partagé entre clients.

Cache objet vs cache page

  • Cache page (LiteSpeed, Varnish, plugin WP Super Cache) — stocke la page HTML finale. Imbattable pour un visiteur non connecté qui voit une page statique.
  • Cache objet (Redis, Memcached) — stocke les résultats intermédiaires (requêtes SQL, options WordPress, sessions). Utile pour les pages dynamiques non cachables : dashboard admin, panier, compte client, endpoints d'API.

Les deux sont complémentaires. Redis brille là où LiteSpeed ne peut pas cacher.

WordPress : plugin Redis Object Cache

Le plugin de référence, maintenu par Till Krüss :

  1. Extensions > Ajouter > chercher Redis Object Cache, installer, activer.
  2. Déclarer les paramètres de connexion dans wp-config.php, avant la ligne « That's all, stop editing » :
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_PASSWORD', 'votreMotDePasseRedis');
define('WP_REDIS_DATABASE', 0);
define('WP_REDIS_PREFIX', 'wp_');      // utile si plusieurs sites sur la même instance
define('WP_CACHE_KEY_SALT', 'votredomaine.fr_'); // ou équivalent, pour isoler les caches
  1. Dans l'admin WordPress > Réglages > Redis, cliquez sur Enable Object Cache.
  2. La page doit afficher Status: Connected avec le type de client utilisé (PhpRedis si l'extension PHP est disponible, sinon Predis en pur PHP).
💡
PhpRedis vs Predis
PhpRedis (extension compilée) est environ 10× plus rapide que Predis (implémentation pure PHP). Chez Datacampus, l'extension PhpRedis est disponible pour toutes les versions PHP modernes : demandez son activation si elle ne l'est pas par défaut sur votre hébergement.

Multi-sites ou plusieurs WP sur la même instance Redis

Si vous faites tourner plusieurs WordPress sur une seule instance Redis, isolez les clés avec WP_CACHE_KEY_SALT (et/ou WP_REDIS_PREFIX) différents par site. Sans ça, deux sites qui utilisent la même clé wp_options_all vont se polluer l'un l'autre.

PrestaShop

PrestaShop supporte Redis en natif depuis la 1.7.

  1. Paramètres avancés > Performances.
  2. Section Mise en cache, activer Utiliser le cache.
  3. Choisir Redis comme système de cache.
  4. Ajouter un serveur : host, port, auth (mot de passe), base (généralement 0).
  5. Sauvegarder puis cliquer sur Vider le cache.

Pour WooCommerce, aucune étape spécifique : Redis Object Cache prend en charge les opérations WC (transients, sessions, options) automatiquement.

Vérifier que Redis travaille vraiment

Côté CMS

Redis Object Cache affiche des statistiques (hit/miss ratio) dans Réglages > Redis. Sur un site qui chauffe, le ratio de hits devrait grimper vite au-dessus de 90 %.

Côté Redis (CLI)

# Se connecter
redis-cli -h 127.0.0.1 -p 6379 -a 'votreMotDePasseRedis'

# Statistiques globales (keyspace, memory, hit ratio)
127.0.0.1:6379> INFO stats
127.0.0.1:6379> INFO memory
127.0.0.1:6379> INFO keyspace

# Combien de clés dans la base 0
127.0.0.1:6379> DBSIZE

# Inspecter une clé (attention sur les grosses valeurs)
127.0.0.1:6379> TYPE wp_options:alloptions
127.0.0.1:6379> MEMORY USAGE wp_options:alloptions

# Hits / miss
127.0.0.1:6379> INFO stats | grep keyspace

Indicateurs clés

  • used_memory_human — consommation mémoire actuelle. Doit rester sous la limite allouée.
  • keyspace_hits / keyspace_misses — ratio hits/(hits+miss) idéalement > 0,9 sur un site rodé.
  • evicted_keys — nombre de clés évincées pour cause de mémoire pleine. S'il grimpe, il faut plus de mémoire ou une meilleure politique (voir maxmemory-policy).
  • connected_clients — nombre de connexions ouvertes. Les connexions persistantes PHP-FPM peuvent en ouvrir beaucoup.

Invalidation sur déploiement

À chaque déploiement qui touche au code ou aux données, videz le cache. Un cache pollué par des objets sérialisés obsolètes, c'est la source numéro un des « pourquoi ça marche pas après le deploy ».

WordPress — CLI

# Flush de la DB Redis utilisée par WP
wp cache flush

# Ou via redis-cli (tous sites confondus sur la DB)
redis-cli -a 'votreMotDePasseRedis' FLUSHDB

PrestaShop

php bin/console cache:clear --env=prod

À intégrer dans vos scripts de déploiement (post-deploy hook GitLab CI, rsync + ssh, etc.).

⚠️
FLUSHALL vs FLUSHDB
FLUSHDB vide uniquement la base courante (généralement la 0). FLUSHALL vide toutes les bases de l'instance Redis — catastrophique si plusieurs apps partagent l'instance. Utilisez FLUSHDB, ou mieux, ciblez par préfixe.

Invalidation ciblée par préfixe

# Supprimer toutes les clés d'un site sans toucher aux autres
redis-cli -a 'votreMotDePasseRedis' --scan --pattern 'wp_site1:*' | \
    xargs -r redis-cli -a 'votreMotDePasseRedis' DEL

Limites et anti-patterns

  • Ne pas stocker des gros blobs (images, PDF). Redis est un cache mémoire, pas un object storage. Gardez des valeurs < quelques centaines de Ko.
  • Persistance — Redis peut persister sur disque (RDB / AOF). Pour un cache objet, la persistance n'est pas critique : si Redis redémarre vide, il se reremplit au fil des requêtes. Chez Datacampus, on configure selon votre usage (cache seul = pas de persistance, sessions = persistance activée).
  • Sécurité — ne jamais exposer Redis sur Internet sans mot de passe fort. Nos instances écoutent uniquement sur la loopback ou sur un réseau privé entre votre VM et le serveur Redis dédié.

Pour aller plus loin

Besoin d'aide ?

Cette documentation ne couvre pas votre cas ? Notre support humain est là.