Maison  >  Article  >  développement back-end  >  Comment utiliser le mécanisme de mise en cache en PHP ?

Comment utiliser le mécanisme de mise en cache en PHP ?

PHPz
PHPzoriginal
2023-05-12 08:22:35823parcourir

Avec le développement des applications Web, le mécanisme de mise en cache est devenu un élément important du développement Web. En utilisant des mécanismes de mise en cache, les performances et le temps de réponse de votre application peuvent être considérablement améliorés. En PHP, le mécanisme de mise en cache peut être utilisé pour mettre en cache les résultats des requêtes de base de données, les réponses API, les fragments de pages Web, etc. Cet article explique comment utiliser le mécanisme de mise en cache en PHP pour améliorer les performances des applications.

1. Pourquoi vous devez utiliser la mise en cache

Dans les applications Web, des requêtes et des opérations fréquentes sur la base de données sont souvent nécessaires. Par exemple, un site Web commercial peut effectuer diverses opérations sur l'inventaire des produits, les données de commande, les informations sur les utilisateurs, etc. Ces opérations impliqueront une interaction avec la base de données. Cependant, effectuer des requêtes de base de données pour chaque requête gaspillera beaucoup de temps et de ressources.

Pour cette raison, nous devons mettre en cache ces résultats afin que les données puissent être obtenues plus rapidement lors de la prochaine requête sans avoir à réinterroger la base de données. Le mécanisme de mise en cache peut réduire efficacement la charge sur le serveur et réduire le temps de réponse et la consommation de ressources des opérations de base de données.

2. Comment fonctionne le mécanisme de mise en cache

Le mécanisme de mise en cache stocke principalement les résultats demandés dans la mémoire ou sur le disque dur, afin que la requête suivante puisse obtenir directement les résultats du cache sans nouvelle requête. Les mécanismes de mise en cache peuvent généralement être divisés en deux types : le cache mémoire et le cache disque dur.

Cache mémoire : un mécanisme de mise en cache qui stocke les données en mémoire, ce qui permet d'obtenir rapidement des données. Cependant, les données mises en cache ne peuvent pas dépasser la capacité de la mémoire du serveur, sinon cela entraînera un risque de fuite de mémoire.

Cache de disque dur : un mécanisme de mise en cache qui enregistre les données sur le disque dur, qui peut accueillir une grande quantité de données, mais la vitesse d'obtention des données est plus lente que le cache mémoire.

Quel que soit le mécanisme de mise en cache utilisé, le délai d'expiration du cache doit être pris en compte. Si la période de validité des données mises en cache a expiré, les données doivent être à nouveau interrogées et mises en cache.

3. Comment utiliser le mécanisme de mise en cache

En PHP, le mécanisme de mise en cache peut être implémenté en utilisant la bibliothèque de cache. Les bibliothèques de cache courantes incluent : Memcached, Redis et APC.

  1. Memcached

Memcached est un système de mise en cache de mémoire haute performance qui peut accéder rapidement à tout type de données et est généralement utilisé pour mettre en cache les résultats des requêtes de base de données. Pour utiliser la bibliothèque Memcached, vous devez d'abord installer et configurer le service Memcached.

Installer le service Memcached : sudo apt-get install memcached

Installer la bibliothèque Memcached : sudo apt-get install php-memcached

Exemple d'utilisation :

$memcached = new Memcached();
$memcached->addServer('localhost', 11211); //连接Memcached服务

$key = 'data_key'; //缓存数据的键名
$data = $memcached->get($key); //尝试从缓存中获取数据

if (!$data) {  //如果缓存数据不存在,则去数据库获取数据并缓存结果
  $data = getDataFromDatabase();
  $memcached->set($key, $data, 60); //将数据缓存60秒
}

//使用$data数据
  1. Redis

Redis est un système de cache et de stockage open source, prend en charge plusieurs structures de données et types de cache. Contrairement à Memcached, Redis peut stocker les données mises en cache en mémoire ou sur le disque dur. Par rapport à Memcached, Redis prend en charge davantage de types de données, tels que Hash, String, List, etc., et peut également être utilisé comme cache persistant.

Installer le service Redis : sudo apt-get install redis-server

Installer la bibliothèque Redis : sudo apt-get install php-redis

Exemple d'utilisation :

$redis = new Redis();
$redis->connect('localhost', 6379); //连接Redis服务

$key = 'data_key'; //缓存数据的键名
$data = $redis->get($key); //尝试从缓存中获取数据

if (!$data) {  //如果缓存数据不存在,则去数据库获取数据并缓存结果
  $data = getDataFromDatabase();
  $redis->set($key, $data, 60); //将数据缓存60秒
}

//使用$data数据
  1. APC

APC (Alternative PHP Cache) est un logiciel léger Un mécanisme de mise en cache PHP à grande échelle capable de mettre en cache les fichiers de script PHP, les résultats des requêtes de base de données et tout type de données. Par rapport à Memcached et Redis, les données du cache APC sont stockées en mémoire, mais il convient de noter qu'APC ne peut être utilisé que dans un environnement de serveur unique.

Installer la bibliothèque APC : sudo apt-get install php-apc

Exemple d'utilisation :

//检查缓存是否存在
if (apc_exists('data_key')) {
  $data = apc_fetch('data_key'); //从缓存中获取数据
} else {
  $data = getDataFromDatabase();
  apc_store('data_key', $data, 60); //将数据缓存60秒
}

//使用$data数据

4. Meilleures pratiques du mécanisme de mise en cache

  1. Choisissez la bibliothèque de mise en cache appropriée

Vous devez décider de l'utiliser en fonction du projet. exigences et ressources du serveur Quelle bibliothèque de mise en cache. Si vous avez besoin d'obtenir rapidement des données mises en cache, vous pouvez choisir d'utiliser une bibliothèque de cache mémoire, telle que Memcached et Redis. Si vous devez enregistrer une grande quantité de données mises en cache, vous pouvez choisir d'utiliser une bibliothèque de cache de disque dur, telle que. Redis ou APC.

  1. Définissez un temps de cache raisonnable

Le temps de cache doit être défini en fonction des conditions spécifiques de l'application. Si les données changent fréquemment, la durée du cache doit être plus courte ; si les données changent rarement, la durée du cache peut être plus longue. Dans le même temps, afin d'éviter les incohérences entre les données mises en cache et les données réelles, les données mises en cache peuvent être mises à jour avant leur expiration.

  1. Évitez la pénétration du cache et l'avalanche de cache

La pénétration du cache signifie demander une clé qui n'existe pas du tout, donc chaque requête ira à la base de données pour interroger, ce qui entraînera un gaspillage des ressources du serveur. Le moyen d'éviter la pénétration du cache consiste à définir des valeurs par défaut pour les clés qui n'existent pas dans le cache, telles que des chaînes vides ou des tableaux vides.

L'avalanche de cache signifie qu'une grande quantité de données mises en cache expire et est remise en cache en même temps, provoquant une pression de requête excessive sur la base de données et éventuellement une indisponibilité du serveur. La manière d'éviter les avalanches de cache consiste à définir des délais d'expiration différents pour empêcher les données mises en cache d'expirer en même temps.

4. Résumé

Le mécanisme de mise en cache est un moyen efficace d'améliorer les performances et le temps de réponse des applications Web. En PHP, des bibliothèques de mise en cache telles que Memcached, Redis et APC peuvent être utilisées pour implémenter le mécanisme de mise en cache. Afin de garantir l'efficacité du mécanisme de cache, il est nécessaire de sélectionner une bibliothèque de cache appropriée, de définir une durée de cache raisonnable et d'éviter la pénétration du cache et l'avalanche de cache. Grâce à une utilisation raisonnable des mécanismes de mise en cache, les performances et l'expérience utilisateur des applications Web peuvent être améliorées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn