Maison  >  Article  >  développement back-end  >  Comment utiliser Memcache pour obtenir une mise en cache et une lecture efficaces des données dans le développement PHP ?

Comment utiliser Memcache pour obtenir une mise en cache et une lecture efficaces des données dans le développement PHP ?

王林
王林original
2023-11-07 10:00:191196parcourir

Comment utiliser Memcache pour obtenir une mise en cache et une lecture efficaces des données dans le développement PHP ?

Dans le développement d'applications Web, une question courante est de savoir comment améliorer l'efficacité de l'accès aux données, améliorant ainsi les performances des applications et l'expérience utilisateur. Pour résoudre ce problème, nous pouvons utiliser diverses techniques, dont l'une consiste à utiliser Memcache pour la mise en cache et la lecture des données.

Memcache est un système de cache de mémoire distribué hautes performances qui peut efficacement mettre en cache des données communes telles que les résultats des requêtes de base de données, les données de session, les résultats de calcul, etc., réduisant ainsi le nombre d'accès aux systèmes principaux tels que les bases de données et améliorant ainsi le système. performances et stabilité.

Dans le développement PHP, nous pouvons utiliser les extensions Memcache et les fonctions associées pour obtenir une mise en cache et une lecture efficaces des données. Ci-dessous, nous présenterons les étapes spécifiques et un exemple de code sur la façon d'utiliser Memcache pour mettre en cache et lire des données.

1. Installez et configurez l'extension Memcache

Avant d'utiliser Memcache, nous devons installer et configurer l'extension Memcache. L'extension Memcache est un module PHP Vous pouvez télécharger le code source correspondant sur le site officiel (http://pecl.php.net/package/memcache) et utiliser les commandes suivantes pour compiler et installer :

tar zxvf memcache-x.x.x.tgz
cd memcache-x.x.x
phpize
./configure
make && make install

Après l'installation. est terminé, remplacez le code suivant Ajoutez au fichier php.ini pour activer l'extension Memcache :

extension=memcache.so

2. Connectez-vous et utilisez Memcache

La première étape de l'utilisation de Memcache est d'établir une connexion. Vous pouvez utiliser le code suivant pour créer une instance Memcache (connexion par défaut au serveur local) :

$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");

Après avoir établi la connexion, vous pouvez utiliser les méthodes suivantes pour définir et obtenir des données de Memcache :

  1. Stocker les données :
$memcache->set($key, $value, $expire);

Où, $ key est le nom de clé des données, $value est la valeur des données et $expire est le délai d'expiration des données (l'unité est la seconde, la valeur par défaut est 0, ce qui signifie qu'elle n'expirera jamais) .

Par exemple, vous pouvez utiliser le code suivant pour écrire un résultat de requête de base de données dans Memcache :

$key = 'user_1';
$result = $db->query("SELECT * FROM users WHERE id=1");
$row = $result->fetch_array();
$memcache->set($key, $row, 3600);

Dans le code ci-dessus, $db est un objet de connexion à la base de données MySQL et $row est un résultat de requête. Les résultats de la requête sont mis en cache ici pendant 1 heure et les données peuvent être lues directement depuis Memcache lors de la prochaine visite, évitant ainsi un accès répété à la base de données.

  1. Obtenir des données :
$memcache->get($key);

Par exemple, vous pouvez utiliser le code suivant pour lire les données utilisateur qui viennent d'être mises en cache depuis Memcache :

$key = 'user_1';
$row = $memcache->get($key);
if (!$row) {
    $result = $db->query("SELECT * FROM users WHERE id=1");
    $row = $result->fetch_array();
    $memcache->set($key, $row, 3600);
}

Dans le code ci-dessus, essayez d'abord de lire les données depuis Memcache, et si c'est le cas n'existe pas, il sera lu à partir de la base de données et écrira les résultats de la requête dans Memcache en même temps. Les données pourront être lues directement à partir du cache la prochaine fois que vous y accéderez.

  1. Supprimer des données :
$memcache->delete($key);

Par exemple, vous pouvez utiliser le code suivant pour supprimer les données utilisateur qui viennent d'être mises en cache :

$key = 'user_1';
$memcache->delete($key);

3 Exemple de code

Ce qui suit est un exemple de code spécifique pour mettre en cache un résultat de requête plus complexe. dans Memcache et lisez les données directement depuis le cache lors de la prochaine visite pour améliorer l'efficacité des requêtes :

$key = 'top_users';
$users = $memcache->get($key);

if (!$users) {
    // 查询活跃度前10名的用户
    $result = $db->query("SELECT u.id, u.name, COUNT(p.id) AS post_count FROM users u LEFT JOIN posts p ON u.id=p.user_id GROUP BY u.id ORDER BY post_count DESC LIMIT 10");
    $users = array();
    while ($row = $result->fetch_assoc()) {
        $users[] = $row;
    }

    // 将查询结果写入缓存
    $memcache->set($key, $users, 3600);
}

// 输出查询结果
foreach ($users as $user) {
    echo $user['name'] . ': ' . $user['post_count'] . '
'; }

Dans le code ci-dessus, essayez d'abord de lire les données de Memcache, si elles n'existent pas, interrogez-les depuis la base de données, et écrire les résultats de la requête en même temps Dans Memcache, le temps de cache est de 1 heure. Les données peuvent être lues directement depuis le cache lors de la prochaine visite.

4. Résumé

L'utilisation de Memcache pour la mise en cache et la lecture des données est une méthode efficace pour améliorer les performances des applications Web. En utilisant les extensions Memcache et les fonctions associées, nous pouvons facilement réaliser une mise en cache et une lecture rapides des données, réduire considérablement le nombre d'accès au système back-end et améliorer les performances et la stabilité du système. Dans le processus de développement actuel, Memcache peut être utilisé de manière flexible en fonction des exigences de l'application et de scénarios spécifiques pour optimiser l'efficacité de l'accès aux donné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