Your SlideShare is downloading. ×
Memcached, une solution de cache par excellence
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Memcached, une solution de cache par excellence

3,850
views

Published on

Decouvrir Memcached

Decouvrir Memcached

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,850
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Memcached Cache server Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 2. Sommaire
    • • Introduction aux systèmes de cache (En general) • Présentation du serveur Memcached • Installation et configuration de Memcache • Présentation de la lib Memcached pour PHP • Atelier 1 : Implémentation de Memcached avec une application PHP • Atelier 2 : Implémentation de Memcached avec plusieurs applications hétérogènes (PHP, JAVA, C) • Atelier 3 : Partager les sessions PHP avec Memcached pour faire du clustering
    Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 3. Introduction aux systèmes de cache
    • Le cache système : Ce système de cache n'est pas lié à votre application web , ce dernier, se place en amont de votre application , au niveau de votre serveur web. Ce système est placé comme une couche au dessus de votre serveur web, il est chargé d’intercepter les requêtes des clients et de vérifier si le contenu de cette requête n’est pas placé déjà en cache , si cela est le cas, le résultat est directement renvoyé au client sans solliciter le serveur web, ni même notre application web. Par contre, si le résultat de la requête n'est pas disponible dans le cache, la requête est alors renvoyée au serveur web qui transmettra le résultat et l’envoie au client, et par la même occasion sauvegarde le résultat dans son cache. Cette solution a comme énorme avantage, de ne pas avoir à modifier notre code , et ainsi bénéficier d’une très grande facilité d’intégration. Le résultat est souvent spectaculaire quand cette solution est bien configurée. Cependant, elle ne convient pas à tout le monde , elle n'est pas accessible en hébergement mutualisé , car cela nécessite une intervention directe sur l’architecture web du serveur. Exemple : • Squid  et Zend plateforme
    • Le cache opcode : Avant qu’un script PHP soit exécuté, il doit être analysé et converti en une série d’instructions appelée opcode, ce dernier est interprété par le moteur PHP qui est le Zend Engine. Donc à chaque fois qu’un code PHP doit être exécuté, il doit être analysé, transformé en opcode en suite interprété. Et comme un script change rarement entre deux exécutions, il est intéressant de ne plus générer l’opcode et passer directement à l’interprétation , et ainsi sauter une étape. Le cache opcode mémorise l’opcode généré par PHP en mémoire ou sur disque. Ainsi, à chaque nouvelle exécution de votre script, on économise la coûteuse transformation du script en opcode. Pour implémenter ce type de cache, il faut modifier votre configuration de PHP. Exemples : Zend Accelerator et APC
    Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 4.
    • Le cache du contenu : Ce type de cache est étroitement lié à votre application PHP, et vous devez faire certaines modifications sur votre code. Ce dernier consiste à mettre en cache une page php dans un fichier plat (Texte) sur le disque. Nous pouvons décider de la page à mettre en cache via les URL, et la vie de la mise en cache de cette dernière. Exemples : jpcache et PEAR/Cache
    • Le cache en mémoire : Le cache en mémoire, est certainement la solution la plus prisée et la plus efficace. Ca consiste à mettre en cache vos variables (String, Numérique, Tableaux, Object) en mémoire, et les faire partager avec votre cache soit par la même application ou même a plusieurs applications, que se soit une application web ou autre. Le principal avantage de la mise en cache en mémoire, est la rapidité d’accès à votre cache, car il est plus rapide d’accéder à la mémoire qu’au disque. Cependant, il faut être prudent avec la mise en cache, car si vous ne disposez pas de beaucoup de mémoire et si vous stockez une quantité importante en mémoire, vous risquez de planter votre serveur. Une bonne gestion de la mise en cache est nécessaire. Un autre inconvénient, c’est que vous perdez votre cache si le serveur reboote.
    Introduction aux systèmes de cache Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 5. Installation et configuration de Memcache
    • Installation sous Windows :
    • Télécharger : http://jehiah.cz/projects/memcached-win32/
    • Décompressez les fichiers binaires dans le répertoire de votre choix (ex: c: memcached)
    • Installez le service en utilisant la commande:  'c:memcachedmemcached.exe -d install' à partir de la ligne de commande 
    • Démarrez le service avec la commande suivante: "c:memcachedmemcached.exe -d start'  4. Utilisez le serveur écoute sur le port 11211 par défaut   5. Utilisez 'memcached.exe -h'  pour une aide supplémentaire de la ligne de commande et de serveur. Exemple memcached.exe -m 100 fixer a 100 mo la mémoire de Memcache.
    • Configuration de PHP :
    • Télécharger l’extension : http://www.pureformsolutions.com/pureform.wordpress.com/2008/06/17/php_memcache.dll et sauvez le dans le répertoire des extensions de php.
    • Configurez PHP.INI: ajoutez extension=php_memcache.dll
    • Vérifier : phpinfo()
    Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 6. Installation et configuration de Memcache
    • Installation sous Linux :
    • Installation : yum install memcached ou rpm -Uvh memcached-xxx.rpm
    • Configuration : Les options sont enregistrées dans le fichier  /etc/sysconfig/memcached
    • Activation : chkconfig memcached on service memcached start
    Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 7. Librairie Memcache  pour  PHP
    • http://www.php.net/manual/en/book.memcache.php
    • Memcache::connect :
    • $memcache = new Memcache; $memcache->connect('memcache_host', 11211);
    • Memcache::set : $memcache->set("str_key", "String to store in memcached");
    • $memcache->set("num_key", 123);
    • $object = new StdClass;
    • $object->attribute = 'test';
    • $memcache->set("obj_key", $object);
    • $array = Array('assoc'=>123, 345, 567);
    • $memcache->set("arr_key", $array);
    Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 8. Librairie Memcache  pour  PHP
    • Memcache::get
    • $var = $memcache->get(‘str_key');
    • Memcache::delete
    • /* après 10 secondes, l'élément sera effacé par le serveur de  $memcache->delete('key_to_delete', 10);
    • Memcache::flush
    • $memcache->flush();
    • Memcache::close
      • $memcache->close();
    Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 9. Exemple
    • <?php
    • $memcache = memcache_connect('localhost', 11211,2);
    • if ($memcache) {
    • $memcache->set(&quot;str_key&quot;, &quot;String to store in memcached&quot;);
    • $memcache->set(&quot;num_key&quot;, 123);
    • $object = new StdClass;
    • $object->attribute = 'test';
    • $memcache->set(&quot;obj_key&quot;, $object);
    • $array = Array('assoc'=>123, 345, 567);
    • $memcache->set(&quot;arr_key&quot;, $array);
    • echo&quot;<pre>&quot;;
    • var_dump($memcache->get('str_key'));
    • var_dump($memcache->get('num_key'));
    • var_dump($memcache->get('obj_key'));
    • echo&quot;</pre>&quot;;
    • $memcache->set('var_key666', 'quelques grosses variables', MEMCACHE_COMPRESSED, 50);
    • echo $memcache->get('var_key');
    • }
    • else {
    • echo &quot;Connection to memcached failed&quot;;
    • }
    • ?>
    Présentation de Mehdi Mehni : mehdi.mehni@gmail.com
  • 10. Les session sous Memcached
    • Configuration :
    • Les options sont prévues (commentées) dans le fichier /etc/php.d/memcache.ini. Il suffit de les décommenter et de les adapter :
    • ; Use memcache as a session handler session.save_handler=memcache
    • ; Defines a comma separated of server urls to use for session storage session.save_path=&quot;tcp://localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=15&quot;
    • Tester une page web qui fait appel aux sessions, cela devrait fonctionner et le répertoire /var/lib/php/session rester vide.
    Présentation de Mehdi Mehni : mehdi.mehni@gmail.com