Zoeken…


Opmerkingen

Installatie

U kunt memcache installeren met behulp van pecl

pecl install memcache

Caching met behulp van memcache

Memcache is een gedistribueerd objectcaching-systeem en gebruikt key-value voor het opslaan van kleine gegevens. Voordat u Memcache code in PHP begint op te roepen, moet u ervoor zorgen dat deze is geïnstalleerd. Dat kan met de methode class_exists in php. Nadat is bevestigd dat de module is geïnstalleerd, begint u met het verbinden met een memcache-serverinstantie.

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

Dit valideert dat Memcache php-stuurprogramma's zijn geïnstalleerd en verbinding maken met memcache-serverinstantie die op localhost wordt uitgevoerd.

Memcache wordt uitgevoerd als een daemon en wordt memcached genoemd

In het bovenstaande voorbeeld hebben we slechts verbinding gemaakt met één exemplaar, maar u kunt ook verbinding maken met meerdere servers via

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

Merk op dat in dit geval, anders dan bij Connect, er geen actieve verbinding is totdat u probeert een waarde op te slaan of op te halen.

Bij caching zijn er drie belangrijke bewerkingen die moeten worden geïmplementeerd

  1. Gegevens opslaan: nieuwe gegevens toevoegen aan server in memcache
  2. Gegevens ophalen: gegevens ophalen van een in de cache opgeslagen server
  3. Gegevens verwijderen: verwijder al bestaande gegevens van de in de memcache opgeslagen server

Gegevens bewaren

$cache of klasseobject met memcache heeft een set methode die een sleutel, waarde en tijd in beslag neemt om de waarde voor (ttl) op te slaan.

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

Hier is $ ttl of time to live de tijd in seconden dat u wilt dat memcache het paar op de server opslaat.

Gegevens verkrijgen

$cache of klasseobject met memcache heeft een methode get die een sleutel opneemt en de bijbehorende waarde retourneert.

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

Als er geen waarde is ingesteld voor de sleutel, wordt deze null geretourneerd

Verwijder data

Soms moet u de cachewaarde verwijderen. $cache of memcache-instantie heeft een delete die hiervoor kan worden gebruikt.

$cache->delete($key);

Klein scenario voor caching

Laten we uitgaan van een eenvoudige blog. Het zal meerdere berichten op de bestemmingspagina hebben die bij het laden van de pagina uit de database worden opgehaald. Om de sql-vragen te verminderen kunnen we memcached gebruiken om de berichten in de cache te plaatsen. Hier is een zeer kleine implementatie

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

De Alternative PHP Cache (APC) is een gratis en open opcode-cache voor PHP. Het doel is om een gratis, open en robuust framework te bieden voor het cachen en optimaliseren van PHP-tussencode.

installatie

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

Cache toevoegen:

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

Cache verwijderen:

apc_delete($key);

Voorbeeld van cache instellen:

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

Prestaties :

APC is bijna 5 keer sneller dan Memcached.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow