Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Verwendung von Memcache in YII

Einführung in die Verwendung von Memcache in YII

巴扎黑
巴扎黑Original
2017-08-06 16:14:261171Durchsuche

In diesem Artikel wird hauptsächlich die Methode zur Verwendung von Memcache im YII-Framework vorgestellt und die Konfiguration, Verwendung und Vorsichtsmaßnahmen für die Verwendung von Memcache im Yii-Framework anhand von Beispielen analysiert

Die Beispiele in diesem Artikel werden erklärt. Erfahren Sie, wie Sie Memcache im YII-Framework verwenden. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Memcache kann problemlos in yii verwendet werden

1. Konfiguration

Cache-Konfiguration zu den Komponenten von main.php hinzufügen


array(
  'components'=>array(
    'cache'=>array(
      'class'=>'CMemCache',
      'servers'=>array(
        array(
          'host'=>'server1',
          'port'=>11211,
          'weight'=>60,
        ),
        array(
          'host'=>'server2',
          'port'=>11211,
          'weight'=>40,
        ),
      ),
    ),
  ),
)

Hinweis:

1) Klasse gibt alle Cache-Klassen an, CMemCache ist es memcache
2) Wenn mehrere Cache-Abfragen verwendet werden sollen, kann jedem Cache eine Gewichtung zugewiesen werden. Wenn nur ein Cache vorhanden ist, können Sie dies tun, ohne diese Konfiguration hinzuzufügen.

2. Die Methode zum Aufrufen von Memcache mit

ist ebenfalls sehr einfach


$key = 'people';
$value = json_encode(array('name'=>'ball', 'age'=>'male'));
$expire = 10;
yii::app()->cache->set($key, $value, $expire);
Yii::app()->cache->get($key);
Yii::app()->cache->delete($key);

Weitere APIs finden Sie im Abschnitt CMemCache des yii-Handbuchs.

3. Probleme

Wenn Sie einheitlich die Erweiterung von yii verwenden, um auf den Memcache zuzugreifen, tritt kein Problem auf. In Wirklichkeit wird es jedoch eine Situation geben: Sie verwenden Yii, um das Backend zu entwickeln, aber die Klassenkameraden an der Rezeption verwenden Yii nicht, sondern verwenden die native Memcache-API, um die Daten zu verwalten. Zu diesem Zeitpunkt werden einige Probleme auftreten.

Wie im zweiten Beispiel oben gezeigt, werden Sie feststellen, dass Sie den Wert nicht erhalten können, wenn Sie die native Memcache-API Memcache::get verwenden und „people“ als Schlüssel verwenden!

Der Grund dafür ist, dass der Satz von yii sowohl den Schlüssel als auch den Wert verarbeitet. Standardmäßig wird dem Schlüssel ein Präfix vorangestellt und MD5 transformiert, und der Wert ist serialisiert(). Es ist kein Wunder, dass Sie den Wert nicht mit Memcache::get('people') ermitteln können.

Lösung:

Eine einfache Methode kann so konfiguriert werden, dass die Memcache-Erweiterung von Yii keine zusätzlichen „kleinen Aktionen“ ausführt.


'cache' => array(
  'class' => 'system.caching.CMemCache',
  'servers' => array( array('host' => '127.0.0.1', 'port' => 11211)),
  'keyPrefix' => '',
  'hashKey' => false,
  'serializer' => false)

Unter ihnen:

keyPrefix: Das Präfix des Schlüssels, generiert von CApplication::getId() Methode standardmäßig.
hashKey: Hash-Operation für Schlüssel ausführen, Standard-MD5
Serializer: Serialisierungsmethode des Werts, Standard-Serialize

lässt diese leer, die Erweiterung Das Verhalten stimmt mit dem nativen Memcache überein.

4. Weitere Memcache-Methodenaufrufe

In der yii-Erweiterung gibt es nur die häufigsten Operationen von Memcache und keine Dekrementierung Ähnlich wie nativer Memcache und Inkrementierung sowie andere Vorgänge. Was ist, wenn Sie diese Methoden verwenden möchten? Sie können die getMemCache-Methode in der Erweiterung verwenden, um das native Memcache-Objekt abzurufen, und dann die native Methode verwenden.


$mem = Yii::app()->cache->getMemCache();
$res = $mem->decrement($key);

Bei Verwendung der nativen Methode ist es am besten, die oben in (3) genannte Konfiguration festzulegen, andernfalls gleichzeitig die Erweiterungsmethode von yii und die native Methode von Memcache zu verwenden Die Zeit wird Ärger bringen.

Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung von Memcache in YII. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn