Sök…


Anmärkningar

Installation

Du kan installera memcache med hjälp av pecl

pecl install memcache

Cache med memcache

Memcache är ett distribuerat objektcachingssystem och använder key-value för att lagra små data. Innan du börjar ringa Memcache kod till PHP måste du se till att den är installerad. Det kan göras med metoden class_exists i php. När det har validerats att modulen är installerad börjar du med att ansluta till memcache-serverinstansen.

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

Detta kommer att bekräfta att Memcache php-drivrutiner är installerade och ansluter till memcache-serverinstansen som körs på localhost.

Memcache körs som en demon och kallas memcached

I exemplet ovan har vi bara anslutit till en enda instans, men du kan också ansluta till flera servrar med

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

Observera att i detta fall, till skillnad från anslutning, kommer det inte att finnas någon aktiv anslutning tills du försöker lagra eller hämta ett värde.

Vid caching finns det tre viktiga operationer som måste genomföras

  1. Lagra data: Lägg till ny data till memcached server
  2. Hämta data: Hämta data från memcached server
  3. Radera data: Ta bort redan befintlig data från memcached server

Lagra data

$cache eller memcached klassobjekt har en set metod som tar in en nyckel, värde och tid för att spara värdet för (ttl).

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

Här är $ ttl eller tid att leva tid i sekunder som du vill att memcache ska lagra paret på servern.

Hämta data

$cache eller memcached klassobjekt har en get metod som tar in en nyckel och returnerar motsvarande värde.

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

Om det inte finns något värde för nyckeln kommer den att returnera noll

Ta bort data

Ibland kan du behöva ta bort ett cachevärde. $cache cache- eller memcache-instans har en delete som kan användas för samma sak.

$cache->delete($key);

Litet scenario för caching

Låt oss anta en enkel blogg. Det kommer att ha flera inlägg på målsidan som hämtas från databasen med varje sidbelastning. För att minska sqlfrågorna kan vi använda memcached för att cache-posta inlägg. Här är en mycket liten implementering

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 med APC-cache

Den alternativa PHP-cachen (APC) är en gratis och öppen opecache-cache för PHP. Dess mål är att tillhandahålla en gratis, öppen och robust ram för caching och optimering av PHP-mellankod.

installation

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

Lägg till cache:

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

Radera cache:

apc_delete($key);

Ställ in cache-exempel:

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

Prestanda :

APC är nästan fem gånger snabbare än Memcached.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow