Buscar..


Observaciones

Instalación

Puedes instalar memcache usando pecl

pecl install memcache

Caché utilizando memcache

Memcache es un sistema de almacenamiento en caché de objetos distribuidos y utiliza key-value para almacenar datos pequeños. Antes de comenzar a llamar código de Memcache a PHP, debe asegurarse de que esté instalado. Eso se puede hacer usando el método class_exists en php. Una vez que se valida que el módulo está instalado, comienza a conectarse a la instancia del servidor memcache.

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

Esto validará que los controladores php de Memcache estén instalados y se conectarán a la instancia del servidor memcache que se ejecuta en localhost.

Memcache se ejecuta como un demonio y se llama memcached

En el ejemplo anterior solo nos conectamos a una sola instancia, pero también puede conectarse a múltiples servidores usando

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

Tenga en cuenta que, en este caso, a diferencia de la conexión, no habrá ninguna conexión activa hasta que intente almacenar o recuperar un valor.

En el almacenamiento en caché hay tres operaciones importantes que deben implementarse

  1. Almacenar datos: agregar nuevos datos al servidor memcached
  2. Obtener datos: obtener datos del servidor memcached
  3. Eliminar datos: eliminar datos ya existentes del servidor memcached

Almacenamiento de datos

$cache o objeto de clase memcached tiene un método de set que toma una clave, valor y tiempo para guardar el valor para (ttl).

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

Aquí $ ttl o time to live es el tiempo en segundos que desea que memcache almacene el par en el servidor.

Obtener datos

$cache o objeto de clase memcached tiene un método de get que toma una clave y devuelve el valor correspondiente.

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

En caso de que no haya un valor establecido para la clave, se devolverá nulo.

Borrar datos

A veces es posible que tenga que eliminar algún valor de caché. $cache instancia de $cache o memcache tiene un método de delete que puede usarse para el mismo.

$cache->delete($key);

Pequeño escenario para el almacenamiento en caché

Asumamos un simple blog. Tendrá múltiples publicaciones en la página de destino que se obtendrán de la base de datos con cada carga de página. Para reducir las consultas de SQL podemos usar memcached para almacenar en caché las publicaciones. Aquí hay una implementación muy pequeña.

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");
}

Caché utilizando caché APC

El caché de PHP alternativo (APC) es un caché de código de operación gratuito y abierto para PHP. Su objetivo es proporcionar un marco gratuito, abierto y robusto para almacenar en caché y optimizar el código intermedio de PHP.

instalación

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

Añadir caché:

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

Eliminar caché:

apc_delete($key);

Ejemplo de Set Cache:

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

Rendimiento :

APC es casi 5 veces más rápido que Memcached.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow