Recherche…


Remarques

Installation

Vous pouvez installer memcache en utilisant pecl

pecl install memcache

Mise en cache à l'aide de memcache

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");
}

Cache à l'aide du cache APC

Alternative PHP Cache (APC) est un cache d'opcode gratuit et ouvert pour PHP. Son objectif est de fournir un framework gratuit, ouvert et robuste pour la mise en cache et l'optimisation du code intermédiaire PHP.

installation

sudo apt-get install php-apc
sudo /etc/init.d/apache2 restart

Ajouter un cache:

apc_add ($key, $value , $ttl);
$key = unique cache key
$value = cache value
$ttl = Time To Live;

Supprimer le cache:

apc_delete($key);

Exemple de cache:

if (apc_exists($key)) {
    echo "Key exists: ";
    echo apc_fetch($key);
} else {
    echo "Key does not exist";
    apc_add ($key, $value , $ttl);
}

Performance :

APC est près de 5 fois plus rapide que Memcached.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow