Redis pour PrestaShop : l'amélioration de vitesse dont votre boutique a probablement besoin
Si votre boutique PrestaShop compte plus de quelques centaines de produits et accueille plus qu'une poignée de visiteurs simultanément, vous avez probablement remarqué que les pages mettent plus de temps à se générer qu'elles ne le devraient. La base de données travaille trop, les fichiers de cache sont dispersés sur le disque, et PHP passe de précieuses millisecondes à lire des données qui n'ont pas changé depuis la dernière requête.
Redis résout ce problème. C'est un concept simple avec un impact considérable : au lieu de lire les données depuis le disque ou d'interroger la base de données de manière répétée, Redis conserve les données fréquemment consultées en RAM où elles peuvent être récupérées en microsecondes au lieu de millisecondes.
Qu'est-ce que Redis ?
Redis est un magasin clé-valeur en mémoire. Considérez-le comme un dictionnaire extrêmement rapide : vous lui donnez une clé (comme "product_42_price") et il retourne instantanément la valeur. Parce qu'il stocke tout en RAM plutôt que sur disque, il est de plusieurs ordres de grandeur plus rapide que le cache basé sur les fichiers ou la base de données.
Redis n'est pas une technologie spécifique à PrestaShop. Il est utilisé par des entreprises de toutes tailles — des petites boutiques e-commerce à Netflix et Twitter. Il est open source, bien maintenu et disponible sur la plupart des plateformes d'hébergement.
Ce que Redis remplace dans PrestaShop
PrestaShop utilise le cache en interne pour plusieurs choses. Par défaut, ce cache est stocké sous forme de fichiers sur le disque ou dans la base de données. Redis peut remplacer les deux :
- Cache des templates Smarty — les templates compilés que PrestaShop utilise pour afficher les pages. Avec le cache fichier, chaque lecture de template nécessite une opération d'E/S disque. Avec Redis, c'est une lecture mémoire.
- Cache d'objets — données produits, arborescences de catégories, valeurs de configuration et autres objets que PrestaShop charge sur presque chaque page. Sans cache, chacun nécessite une requête en base de données.
- Stockage des sessions — les sessions clients (état de connexion, contenu du panier) peuvent être stockées dans Redis au lieu de la base de données, réduisant la charge sur MySQL.
- Cache des modules — les modules bien conçus mettent en cache leur sortie. Redis rend ce cache plus rapide en lecture et en écriture.
La différence de performance
L'amélioration varie selon la taille et la configuration actuelle de votre boutique, mais voici les résultats typiques :
- Temps de génération des pages : réduction de 30 à 50%. Une page qui prenait 400ms à générer peut descendre à 200ms.
- Requêtes base de données par page : souvent réduites de 60 à 80%, car les données en cache ne nécessitent plus de requêtes SQL.
- Time to First Byte (TTFB) : amélioration significative, surtout sur les pages avec des données complexes (pages produits avec de nombreux attributs, pages catégories avec filtres).
- Gestion des utilisateurs simultanés : Redis gère facilement des milliers de connexions simultanées, contrairement au cache fichier qui peut créer des goulots d'étranglement d'E/S sous charge.
Pour contexte : lire une valeur en cache depuis le disque prend environ 1 à 10 millisecondes selon le matériel de stockage. Lire la même valeur depuis Redis prend 0,1 à 0,5 milliseconde. Sur une page qui lit plus de 50 valeurs en cache, cette différence se cumule.
Configurer Redis avec PrestaShop
Notre module Instant Redis simplifie la connexion entre PrestaShop et Redis. Vous installez le module, le pointez vers votre serveur Redis, et il gère la configuration automatiquement.
Prérequis :
- Serveur Redis — Redis doit être installé sur votre serveur ou disponible en tant que service managé chez votre hébergeur. La plupart des hébergeurs VPS et dédiés incluent Redis ou le proposent en option.
- Extension PHP Redis — l'extension phpredis doit être installée et activée. La plupart des installations PHP modernes l'incluent.
- Allocation mémoire — Redis a besoin de RAM. Pour une boutique PrestaShop typique, 256 à 512 Mo de RAM dédiée suffisent. Les boutiques plus grandes avec des dizaines de milliers de produits peuvent nécessiter 1 Go ou plus.
Redis vs Memcached
Vous avez peut-être vu Memcached mentionné comme alternative. Les deux sont des systèmes de cache en mémoire, mais Redis présente plusieurs avantages pour PrestaShop :
- Persistance des données — Redis peut optionnellement persister les données sur disque, de sorte que votre cache survit à un redémarrage du serveur. Memcached perd tout lors d'un redémarrage.
- Structures de données — Redis prend en charge les chaînes, listes, ensembles, hashes et ensembles triés. Cela permet des stratégies de cache plus sophistiquées.
- Opérations atomiques — les opérations Redis sont atomiques, empêchant les conditions de concurrence lorsque plusieurs processus PHP mettent à jour le cache simultanément.
- Meilleure efficacité mémoire — Redis utilise la mémoire plus efficacement pour les petites valeurs, ce qui correspond exactement à ce que sont typiquement les entrées de cache PrestaShop.
Pour PrestaShop, Redis est le meilleur choix dans pratiquement tous les scénarios.
Ce que Redis ne résout pas
Redis est puissant, mais ce n'est pas une solution magique pour tous les problèmes de performance :
- Requêtes lentes non mises en cache — si une requête base de données spécifique est lente et s'exécute à chaque chargement de page sans pouvoir être mise en cache (comme les vérifications de stock en temps réel), Redis n'aidera pas. La requête elle-même doit être optimisée.
- Images non optimisées — Redis n'a rien à voir avec la livraison des ressources front-end. Si vos images produits font 5 Mo chacune, Redis ne les fera pas charger plus vite.
- Trop de modules — les modules qui exécutent du code PHP lourd à chaque chargement de page ajoutent du temps d'exécution que le cache ne peut pas éliminer. Le code s'exécute toujours ; seules les lectures de données sont plus rapides.
- Appels API externes lents — si un module appelle une API externe (passerelle de paiement, calculateur de frais de port, système d'inventaire) à chaque chargement de page, cette latence est indépendante de votre cache.
Redis fonctionne mieux en combinaison avec d'autres optimisations de performance. Activez le CCC de PrestaShop (Combiner, Compresser, Cacher), optimisez vos images et réduisez les modules inutiles — puis ajoutez Redis pour rendre les opérations restantes aussi rapides que possible.
Redis pour le Multi-Boutique
Si vous exploitez plusieurs boutiques PrestaShop sur le même serveur, Redis peut toutes les servir depuis une seule instance en utilisant des préfixes de base de données. Chaque boutique obtient son propre espace de clés dans Redis, empêchant les données de fuiter entre les boutiques tout en partageant le même serveur Redis.
C'est plus efficace en mémoire que d'exécuter une instance Redis séparée par boutique et plus simple à gérer.
Surveiller Redis
Une fois Redis en fonctionnement, vous devriez le surveiller occasionnellement pour vous assurer qu'il est en bonne santé :
- Utilisation mémoire — assurez-vous que Redis n'utilise pas plus de RAM que ce qui lui est alloué. S'il atteint la limite, il commence à évincer des clés, ce qui réduit l'efficacité du cache.
- Taux de succès — le taux de succès du cache devrait être supérieur à 90%. Un taux plus faible signifie que le cache est fréquemment régénéré, ce qui va à l'encontre de son objectif.
- Clients connectés — surveillez le nombre de connexions pour vous assurer de ne pas atteindre les limites de connexion.
La plupart des panneaux de contrôle d'hébergement fournissent un monitoring Redis. Vous pouvez également utiliser la commande redis-cli INFO pour des statistiques détaillées.
Questions fréquentes
Redis fonctionne-t-il avec l'hébergement mutualisé ?
En général, non. Redis nécessite un service en cours d'exécution sur le serveur, ce que l'hébergement mutualisé ne fournit généralement pas. Vous avez besoin au minimum d'un VPS. Si votre boutique est assez grande pour bénéficier de Redis, elle est assez grande pour justifier un hébergement adapté.
Redis peut-il casser quelque chose ?
Non. Si Redis devient indisponible (crash, redémarrage), PrestaShop revient à sa méthode de cache par défaut. Votre boutique continue de fonctionner, juste plus lentement — comme avant Redis.
De combien de RAM Redis a-t-il besoin ?
Pour une boutique avec jusqu'à 5 000 produits : 256 Mo suffisent généralement. Pour 5 000 à 50 000 produits : 512 Mo à 1 Go. Pour de très grands catalogues : 1 à 2 Go. Ce sont des estimations conservatrices — votre utilisation réelle dépend du nombre de modules utilisant le cache et de la complexité de vos données.
Dois-je utiliser Redis pour les sessions aussi ?
Oui, si votre boutique a un trafic important. Stocker les sessions dans Redis au lieu de la base de données réduit la charge MySQL et accélère les lectures de session, ce qui améliore chaque chargement de page authentifié.
En résumé
Redis est l'un de ces upgrades où le ratio effort/impact est excellent. L'installation prend quelques minutes, la configuration est simple avec le bon module, et l'amélioration des performances est immédiatement mesurable. Si votre boutique a dépassé le cache basé sur les fichiers — et si vous lisez cet article, c'est probablement le cas — Redis est l'étape logique suivante.
Pour une vue d'ensemble sur la performance de votre boutique, consultez notre guide sur comment vérifier et améliorer la vitesse de votre boutique.
Commentaires
Aucun commentaire pour le moment. Soyez le premier !
Soyez le premier à poser une question ou à partager un retour utile.
Laisser un commentaire
Partagez une question, un détail de pose ou un retour qui pourrait aider un autre lecteur.