Suche…


Bemerkungen

Installation

Sie können Memcache mit pecl installieren

pecl install memcache

Zwischenspeicherung mit Memcache

Memcache ist ein verteiltes Objekt-Caching-System und verwendet einen key-value zum Speichern kleiner Daten. Bevor Sie mit dem Aufrufen von Memcache Code in PHP beginnen, müssen Sie sicherstellen, dass er installiert ist. Das kann mit der class_exists Methode in PHP gemacht werden. Sobald die Installation des Moduls überprüft wurde, beginnen Sie mit der Verbindung zur memcache-Serverinstanz.

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

Dadurch wird überprüft, dass Memcache-PHP-Treiber installiert sind und eine Verbindung mit der Memcache-Server-Instanz hergestellt wird, die auf Localhost ausgeführt wird.

Memcache wird als Daemon ausgeführt und heißt Memcache

Im obigen Beispiel haben wir nur eine Verbindung zu einer einzelnen Instanz hergestellt, Sie können jedoch auch eine Verbindung zu mehreren Servern herstellen

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

Beachten Sie, dass in diesem Fall im Gegensatz zu connect keine aktive Verbindung besteht, bis Sie versuchen, einen Wert zu speichern oder abzurufen.

Beim Caching gibt es drei wichtige Vorgänge, die implementiert werden müssen

  1. Daten speichern: Neue Daten zu memcached Server hinzufügen
  2. Daten abrufen : Daten vom memcached Server abrufen
  3. Daten löschen: Löschen Sie bereits vorhandene Daten von einem zwischengespeicherten Server

Daten speichern

$cache oder memcached-Klassenobjekt verfügt über eine set Methode, die einen Schlüssel, einen Wert und Zeit zum Speichern des Werts für (ttl) benötigt.

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

Hier ist $ ttl oder time to live die Zeit in Sekunden, in der memcache das Paar auf dem Server speichern soll.

Daten empfangen

$cache oder memcached class object verfügt über eine get Methode, die einen Schlüssel aufnimmt und den entsprechenden Wert zurückgibt.

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

Falls für den Schlüssel kein Wert festgelegt ist, wird null zurückgegeben

Daten löschen

Manchmal müssen Sie möglicherweise einen Cache-Wert löschen. $cache oder memcache-Instanz hat eine delete , die für dieselbe verwendet werden kann.

$cache->delete($key);

Kleines Szenario für das Caching

Nehmen wir einen einfachen Blog an. Es werden mehrere Posts auf der Zielseite vorhanden sein, die bei jedem Laden der Seite aus der Datenbank abgerufen werden. Um die SQL-Abfragen zu reduzieren, können wir memcached verwenden, um die Beiträge zwischenzuspeichern. Hier ist eine sehr kleine Implementierung

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 mit APC-Cache

Der Alternative PHP Cache (APC) ist ein freier und offener Opcode-Cache für PHP. Ziel ist es, ein kostenloses, offenes und robustes Framework für das Zwischenspeichern und Optimieren von PHP-Zwischencode bereitzustellen.

Installation

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

Cache hinzufügen:

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

Cache löschen:

apc_delete($key);

Cache-Beispiel festlegen:

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

Leistung :

APC ist fast fünfmal schneller als Memcached.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow