Position actuelle: Accueil> Derniers articles> Résultats de la requête en cache au système redis / fichiers pour optimiser les performances

Résultats de la requête en cache au système redis / fichiers pour optimiser les performances

M66 2025-05-28

L'optimisation des performances de la requête de la base de données est un défi courant lors du développement d'applications PHP à haute performance. Surtout lors du traitement de grandes quantités de données, l'exécution à plusieurs reprises de la même requête peut considérablement ralentir le temps de réponse de l'application. À l'heure actuelle, les résultats de la requête en cache deviennent une méthode d'optimisation efficace. Cet article explorera comment optimiser les performances de l'application PHP en mettant en cache les résultats de la requête MySQLI_RESULT à Redis ou Système de fichiers.

Pourquoi dois-je mettre en cache les résultats de la requête?

Chaque fois qu'une application effectue une requête de base de données, le moteur de base de données lira les données du disque dur et générera des résultats de requête. Si ces requêtes sont en double et que les données changent rarement, il n'est pas nécessaire de lire les mêmes données de la base de données à chaque fois. La technologie de mise en cache peut stocker les résultats de la requête dans la mémoire (tels que redis) ou les stocker dans un système de fichiers local, réduisant ainsi la fréquence d'accès à la base de données et d'amélioration des performances des applications.

Utilisez Redis pour mettre en cache les résultats de la requête MySQLI_RESULT

Redis est un système de stockage de données en mémoire open source, souvent utilisé pour mettre en cache les données, en particulier pour le stockage de données fréquemment consultées. Vous trouverez ci-dessous les étapes de base pour mettre en cache les résultats de la requête MySQLI_RESULT à Redis.

1. Installer et configurer Redis

Tout d'abord, vous devez installer le service Redis sur le serveur. La méthode d'installation dépend de votre système d'exploitation. Vous pouvez vous référer à m66.net/redis-installation pour des étapes d'installation détaillées.

2. Installez l'extension redis php

Afin d'utiliser Redis dans PHP, vous devez installer l'extension redis pour PHP. Vous pouvez l'installer via la commande suivante:

 sudo pecl install redis

Ensuite, activez l'extension redis dans le fichier php.ini :

 extension=redis.so

3. Connectez-vous à Redis et Résultats de la requête en cache

Voici un exemple simple de code montrant comment mettre en cache les résultats de la requête MySQL dans Redis:

 <?php
// connecter MySQL base de données
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// 检查connecter是否成功
if ($mysqli->connect_error) {
    die('connecter失败: ' . $mysqli->connect_error);
}

// Requête des clés mises en cache
$queryKey = 'my_query_result';

// connecter Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// Essayer de Redis Obtenir des données mises en cache
$cachedResult = $redis->get($queryKey);

if ($cachedResult) {
    // si Redis Il y a des résultats mis en cache dans,Retourner directement
    $result = unserialize($cachedResult);
    echo 'depuis Redis Obtenir des données:';
} else {
    // si Redis Pas de résultats mis en cache,Exécuter les résultats de la requête et du cache
    $result = $mysqli->query('SELECT * FROM my_table');
    
    // Sérialiser et enregistrer les résultats de la requête Redis
    $redis->set($queryKey, serialize($result), 3600); // Définir la période de validité du cache sur 1 Heure
    
    echo 'depuis MySQL Obtenir des données:';
}

// Résultats de la requête imprimées
while ($row = $result->fetch_assoc()) {
    echo $row['column_name'] . "\n";
}

// 关闭connecter
$mysqli->close();
?>

Dans cet exemple, nous essayons d'abord d'obtenir les résultats de la requête en cache de Redis. S'il y a des données mises en cache dans redis, utilisez-les directement; S'il n'y a pas de données mises en cache, exécutez une requête et stockez les résultats en redis.

4. Définir le temps de défaillance du cache

Le cache ne doit pas exister éternellement, surtout lorsque les données peuvent changer. Pour garantir la rapidité des données, vous pouvez définir le temps d'expiration du cache (dans l'exemple ci-dessus, il est de 3600 secondes, ce qui est de 1 heure). Vous pouvez ajuster cette fois en fonction des besoins de l'application.

Utiliser le système de fichiers pour mettre en cache les résultats de la requête

Si vous ne souhaitez pas utiliser Redis, vous pouvez également choisir d'utiliser le système de fichiers pour mettre en cache les résultats de la requête. Le cache du système de fichiers convient aux scénarios qui ne nécessitent pas de vitesses d'accès extrêmement élevées et sont plus faciles à déployer que Redis.

1. Résultats de la requête en cache pour fichier

Voici un exemple simple montrant comment mettre en cache les résultats de la requête au système de fichiers:

 <?php
// connecter MySQL base de données
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// 检查connecter是否成功
if ($mysqli->connect_error) {
    die('connecter失败: ' . $mysqli->connect_error);
}

// Interroger le chemin du fichier mis en cache
$cacheFile = 'cache/my_query_result.cache';

// Vérifiez si le fichier de cache existe et n&#39;a pas expiré
if (file_exists($cacheFile) && filemtime($cacheFile) > (time() - 3600)) {
    // si缓存文件存在且未过期,Lire le contenu du fichier
    $result = unserialize(file_get_contents($cacheFile));
    echo 'depuis文件缓存Obtenir des données:';
} else {
    // si缓存文件不存在或已过期,Exécuter les résultats de la requête et du cache到文件
    $result = $mysqli->query('SELECT * FROM my_table');
    
    // Sérialiser et stocker les résultats de la requête à un fichier
    file_put_contents($cacheFile, serialize($result));
    echo 'depuis MySQL Obtenir des données:';
}

// Résultats de la requête imprimées
while ($row = $result->fetch_assoc()) {
    echo $row['column_name'] . "\n";
}

// 关闭connecter
$mysqli->close();
?>

Dans cet exemple, nous sérialisons les résultats de la requête et les stockons dans un fichier. Si le fichier existe et n'a pas expiré, nous lisons les résultats mis en cache directement du fichier; Sinon, exécutez la requête et stockez les résultats dans le fichier.

2. Définir le temps d'expiration du cache

Semblable à redis, lors de l'utilisation du cache du système de fichiers, nous devons également définir le temps d'expiration du cache. Dans l'exemple de code, la fonction FileMtime détermine le dernier temps de modification du fichier mis en cache pour déterminer si la base de données doit être demandée.

Résumer

En mettant en cache les résultats de la requête MySQLI_RESULT aux systèmes Redis ou File, les performances des applications PHP peuvent être considérablement améliorées et la charge de la base de données peut être réduite. Redis est plus adapté aux scénarios où les données sont fréquemment accessibles, tandis que le cache du système de fichiers convient aux applications avec moins de fréquence d'accès. La méthode de mise en cache à choisir dépend des besoins et de l'environnement de déploiement de votre application.

Que vous choisissiez Redis ou Cache Système de fichiers, vous devez définir un temps de défaillance de cache raisonnable en fonction de la situation réelle pour assurer la rapidité et la précision des données.