Ricerca…


Osservazioni

Installazione

Puoi installare memcache usando pecl

pecl install memcache

Memorizzazione nella cache mediante memcache

Memcache è un sistema di caching di oggetti distribuiti e utilizza il key-value per la memorizzazione di piccoli dati. Prima di iniziare a chiamare il codice Memcache in PHP, è necessario assicurarsi che sia installato. Questo può essere fatto usando il metodo class_exists in php. Una volta convalidato che il modulo è installato, si inizia con la connessione all'istanza del server memcache.

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

Questo convaliderà che i driver php di Memcache sono installati e si connettono all'istanza del server memcache in esecuzione su localhost.

Memcache funziona come demone e si chiama memcached

Nell'esempio sopra abbiamo collegato solo a una singola istanza, ma puoi anche connetterti a più server utilizzando

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

Nota che in questo caso, a differenza della connessione, non ci sarà alcuna connessione attiva finché non proverai a memorizzare o recuperare un valore.

Nella memorizzazione nella cache ci sono tre operazioni importanti che devono essere implementate

  1. Memorizza i dati: aggiungi nuovi dati al server memcached
  2. Ottieni dati: recupera i dati dal server memcached
  3. Elimina dati: cancella i dati già esistenti dal server memcached

Immagazzina dati

$cache o memcached oggetto di classe ha un metodo set che accetta una chiave, valore e tempo per salvare il valore per (ttl).

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

Qui $ ttl o time to live è il tempo in secondi in cui si desidera che memcache memorizzi la coppia sul server.

Ottieni dati

$cache o memcached oggetto di classe ha un metodo get che accetta una chiave e restituisce il valore corrispondente.

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

Nel caso in cui non ci sia alcun valore impostato per la chiave, restituirà null

Elimina dati

A volte potresti aver bisogno di cancellare qualche valore di cache. $cache istanza $cache o memcache ha un metodo di delete che può essere utilizzato per lo stesso.

$cache->delete($key);

Piccolo scenario per il caching

Supponiamo un semplice blog. Avrà più post sulla pagina di destinazione che verranno recuperati dal database con ogni caricamento della pagina. Per ridurre le query SQL possiamo usare memcached per memorizzare i post nella cache. Ecco un'implementazione molto piccola

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

L'alternativa PHP Cache (APC) è una cache di opcode libera e aperta per PHP. Il suo obiettivo è fornire un framework libero, aperto e robusto per la memorizzazione nella cache e l'ottimizzazione del codice intermedio PHP.

installazione

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

Aggiungi cache:

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

Elimina cache:

apc_delete($key);

Imposta esempio di cache:

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

Prestazioni :

APC è quasi 5 volte più veloce di Memcached.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow