Maison >développement back-end >tutoriel php >Une explication de la façon d'utiliser Memcache dans le framework YII

Une explication de la façon d'utiliser Memcache dans le framework YII

巴扎黑
巴扎黑original
2017-08-15 13:17:401595parcourir

Cet article présente principalement la méthode d'utilisation de memcache dans le framework YII, et analyse la configuration, l'utilisation et les précautions d'utilisation de memcache dans le framework Yii sous forme d'exemples. Les amis dans le besoin peuvent se référer à ce qui suit

<.>Les exemples de cet article sont expliqués. Apprenez à utiliser memcache dans le framework YII. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Memcache peut être facilement utilisé dans yii

1. Configuration

Ajouter la configuration du cache aux composants de main.php


array(
  &#39;components&#39;=>array(
    &#39;cache&#39;=>array(
      &#39;class&#39;=>&#39;CMemCache&#39;,
      &#39;servers&#39;=>array(
        array(
          &#39;host&#39;=>&#39;server1&#39;,
          &#39;port&#39;=>11211,
          &#39;weight&#39;=>60,
        ),
        array(
          &#39;host&#39;=>&#39;server2&#39;,
          &#39;port&#39;=>11211,
          &#39;weight&#39;=>40,
        ),
      ),
    ),
  ),
)
Remarque :

1) la classe spécifie toutes les classes de cache, CMemCache est memcache

2) Lorsque plusieurs interrogations de cache doivent être utilisées, chaque cache peut se voir attribuer un poids. S'il n'y a qu'un seul cache, vous pouvez le faire sans ajouter cette configuration.

2. La méthode d'appel de memcache en utilisant

est également très simple


$key = &#39;people&#39;;
$value = json_encode(array(&#39;name&#39;=>&#39;ball&#39;, &#39;age&#39;=>&#39;male&#39;));
$expire = 10;
yii::app()->cache->set($key, $value, $expire);
Yii::app()->cache->get($key);
Yii::app()->cache->delete($key);
Pour plus d'API, veuillez vous référer à la section CMemCache du manuel yii.

3. Problèmes

Lorsque vous utilisez uniformément l'extension de yii pour accéder à Memcache, il n'y aura aucun problème. Mais en réalité, il y aura une situation : vous utilisez Yii pour développer le backend, mais les camarades de classe de la réception n'utilisent pas Yii, mais utilisent l'API native Memcache pour exploiter les données. Vous rencontrerez quelques problèmes à ce moment-là.

Comme le montre le deuxième exemple ci-dessus, vous constaterez que si vous utilisez l'API native de Memcache, Memcache::get, et que vous utilisez des personnes comme clé, vous ne pourrez pas obtenir la valeur !

La raison est que l'ensemble de yii gère à la fois la clé et la valeur. Par défaut, la clé est préfixée et transformée en md5, et la valeur est sérialisée(). Il n'est pas étonnant que vous ne puissiez pas obtenir la valeur en utilisant Memcache::get('people').

Solution :

Une méthode simple peut être configurée pour que l'extension Memcache de Yii n'effectue pas de "petites actions" supplémentaires.


&#39;cache&#39; => array(
  &#39;class&#39; => &#39;system.caching.CMemCache&#39;,
  &#39;servers&#39; => array( array(&#39;host&#39; => &#39;127.0.0.1&#39;, &#39;port&#39; => 11211)),
  &#39;keyPrefix&#39; => &#39;&#39;,
  &#39;hashKey&#39; => false,
  &#39;serializer&#39; => false)
Parmi eux :

keyPrefix : Le préfixe de la clé, généré par le CApplication::getId() méthode par défaut.
hashKey : effectue une opération de hachage sur la clé, md5 par défaut
serializer : méthode de sérialisation de la valeur, sérialisation par défaut

les laissera vides, l'extension étendue le comportement est cohérent avec Memcache natif.

4. Plus d'appels de méthode memcache

Dans l'extension yii, il n'y a que les opérations les plus courantes de memcache, et il n'y a pas de décrémentation similaire au memcache natif et à l'incrémentation et à d'autres opérations. Et si vous souhaitez utiliser ces méthodes ? Vous pouvez utiliser la méthode getMemCache dans l'extension pour obtenir l'objet memcache natif, puis utiliser la méthode native.


$mem = Yii::app()->cache->getMemCache();
$res = $mem->decrement($key);
Lors de l'utilisation de la méthode native, il est préférable de définir la configuration mentionnée en (3) ci-dessus, sinon en utilisant la méthode d'extension de yii et la méthode native de memcache en même temps le temps apportera des ennuis.

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