Mise en cache en PHP : Redis, Memcached et solutions intégrées : de A à Z

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi la mise en cache est la base d'une application PHP rapide



Chaque développeur PHP rencontre tôt ou tard un problème de performances. Lorsque la base de données commence à ralentir et que les pages mettent 3 à 5 secondes à charger, la première chose qui vient à l'esprit est la mise en cache. Ce n'est pas simplement "sauvegarder des données quelque part", c'est toute une philosophie d'optimisation.



Dans cet article, nous allons passer en revue toutes les approches populaires de mise en cache en PHP : du simple cache fichier aux solutions industrielles avec Redis et Memcached. Vous apprendrez comment choisir le bon outil et éviter les erreurs typiques. C'est parti !



1. Mécanismes de mise en cache intégrés en PHP



1.1. Mise en cache du code opcode : OPcache



Avant de parler de stockages externes, il convient de rappeler que PHP lui-même sait mettre en cache son code. Le mécanisme OPcache conserve les scripts compilés dans la mémoire vive, évitant à PHP de devoir analyser et compiler les fichiers à chaque fois.



Activation d'OPcache dans php.ini :



opcache.enable=1opcache.memory_consumption=128opcache.max_accelerated_files=10000opcache.revalidate_freq=2


C'est la première ligne de défense. Sans OPcache, toute autre mise en cache sera moins efficace.



1.2. APCu — cache utilisateur en mémoire



APCu (Alternative PHP Cache) est une extension pour stocker des données arbitraires dans la mémoire partagée du processus PHP. Idéal pour les petits projets où une mise en cache distribuée n'est pas nécessaire.



Exemple de travail avec APCu :



<?php// Sauvegarder les données pendant 5 minutesapcu_store('my_key', ['data' => 'value'], 300);

// Lire les données$data = apcu_fetch('my_key');if ($data === false) { echo "Cache non trouvé, régénération";}

// Supprimer la cléapcu_delete('my_key');?>


Avantages : vitesse fulgurante, simplicité. Inconvénients : les données ne vivent que sur un seul serveur.



2. Memcached : simplicité et rapidité



2.1. Qu'est-ce que Memcached et pourquoi en a-t-on besoin



Memcached est un système de mise en cache distribué en mémoire vive. Il a été créé pour accélérer les applications web dynamiques en réduisant la charge sur les bases de données. Contrairement à APCu, Memcached fonctionne comme un serveur séparé auquel on peut se connecter depuis différentes instances PHP.



2.2. Installation et connexion de Memcached



Commencez par installer le serveur Memcached :



sudo apt install memcachedsudo systemctl start memcached


Ensuite, installez l'extension PHP :



sudo pecl install memcached


Vous pouvez maintenant travailler avec le cache :



<?php$memcached = new Memcached();$memcached->addServer('localhost', 11211);

// Sauvegarder pendant 10 minutes$memcached->set('user_123', ['name' => 'Ivan', 'email' => 'ivan@example.com'], 600);

// Lire$user = $memcached->get('user_123');if ($user === false) { // Charger depuis la BDD}?>


2.3. Quand choisir Memcached



  • Lorsque vous avez besoin d'un simple stockage clé-valeur
  • Lorsque les données ont une courte durée de vie (sessions, données temporaires)
  • Lorsque la persistance n'est pas requise (Memcached ne sauvegarde pas les données sur le disque)


3. Redis : un outil puissant pour des scénarios complexes



3.1. Pourquoi Redis est-il meilleur que Memcached ?



Redis n'est pas seulement un cache, c'est une base de données in-memory complète avec prise en charge de structures de données complexes : listes, ensembles, hachages, bitmaps. Contrairement à Memcached, Redis prend en charge :



  • La persistance — les données ne disparaissent pas lors d'un redémarrage
  • Les transactions et les scripts Lua
  • Pub/Sub pour l'échange de messages
  • La réplication et le clustering


3.2. Exemples de travail avec Redis en PHP



Pour travailler avec Redis, utili

Blogs

Book Recommendations