PHP Mise en cache à l'aide de memcache


Exemple

Memcache est un système de mise en cache d'objets distribués et utilise la key-value pour stocker de petites données. Avant de commencer à appeler le code Memcache en PHP, vous devez vous assurer qu'il est installé. Cela peut être fait en utilisant la méthode class_exists en php. Une fois que le module est validé, vous commencez par vous connecter à l'instance du serveur memcache.

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->connect('localhost',11211);
}else {
  print "Not connected to cache server";
}

Cela permettra de vérifier que les pilotes php de Memcache sont installés et de se connecter à l'instance du serveur memcache qui s'exécute sur localhost.

Memcache s'exécute en tant que démon et s'appelle memcached

Dans l'exemple ci-dessus, nous ne sommes connectés qu'à une seule instance, mais vous pouvez également vous connecter à plusieurs serveurs en utilisant

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->addServer('192.168.0.100',11211);
  $cache->addServer('192.168.0.101',11211);
}

Notez que dans ce cas, contrairement à connect, il n'y aura pas de connexion active avant d'essayer de stocker ou de récupérer une valeur.

Dans la mise en cache, trois opérations importantes doivent être implémentées

  1. Stocker des données: Ajouter de nouvelles données au serveur memcached
  2. Obtenir des données: extraire des données du serveur memcached
  3. Supprimer des données: Supprimer des données déjà existantes du serveur memcached

Stocker des données

$cache objet de classe $cache ou memcached a une méthode set qui prend une clé, une valeur et une heure pour enregistrer la valeur de (ttl).

$cache->set($key, $value, 0, $ttl);

Ici, $ ttl ou time to live est le temps en secondes que vous voulez que memcache stocke la paire sur le serveur.

Obtenir des données

$cache objet de la classe $cache ou memcached a une méthode get qui prend une clé et renvoie la valeur correspondante.

$value = $cache->get($key);

S'il n'y a pas de valeur définie pour la clé, elle retournera null

Suprimmer les données

Parfois, vous pourriez avoir besoin de supprimer une valeur de cache. $cache ou memcache instance a une méthode de delete qui peut être utilisée pour le même.

$cache->delete($key);

Petit scénario pour la mise en cache

Supposons un simple blog. Il y aura plusieurs publications sur la page de destination qui seront extraites de la base de données avec chaque chargement de page. Afin de réduire les requêtes SQL, nous pouvons utiliser memcached pour mettre en cache les publications. Voici une toute petite implémentation

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->connect('localhost',11211);
    if(($data = $cache->get('posts')) != null) {
      // Cache hit
      // Render from cache
    } else {
      // Cache miss
      // Query database and save results to database
      // Assuming $posts is array of posts retrieved from database
      $cache->set('posts', $posts,0,$ttl);
    }
}else {
  die("Error while connecting to cache server");
}