usando memcached con cakephp

Memcached es un sistema distribuido de cache de objetos está especialmente indicado para webs dinámicas con gran carga a la base de datos.

Memcache es una cache en memoria ram, al contrario que la mayoria de los tipos de cache que son mediante ficheros físicos en disco duro. Se puede almacenar fragmentos arbitrarios de datos, ya sean un cadena, un array, un objeto un trozo de html o una página entera.

Considero que memcached es un elemento obligatorio a usar en las aplicaciones con cakephp ya que éstas realizan una gran carga a la base de datos cuando hay muchas relaciones entre modelos.

Ejemplo por defecto de una configuración de cache con memcache en /app/config/core.php

[code]
Cache::config(‘default’, array(
‘engine’ => ‘Memcache’, //[required]
‘duration’=> 3600, //[optional]
‘probability’=> 100, //[optional]
‘prefix’ => Inflector::slug(APP_DIR) . ‘_’, //[optional] prefix every cache file with this string
‘servers’ => array(
‘127.0.0.1:11211’ // localhost, default port 11211
), //[optional]
‘compress’ => false, // [optional] compress data in Memcache (slower, but uses less memory)
));
[/code]

Un ejemplo real:

[code]
Cache::config(‘memcache_ram’, array(‘engine’ => ‘Memcache’,’duration’=> 3600,’probability’=> 100,’servers’ => array(‘127.0.0.1:11211’ ), ‘compress’ => false));
[/code]

Ejemplo de uso en un controlador

[code]

function leer_post($id)
{
$resultado = Cache::read(‘post_’.$id,’memcache_ram’);
if(empty($resultado))
{
$resultado = $this->Cake->findById($id);
$resultado = Cache::write(‘post_’.$id,$resultado,’memcache_ram’);
}
$this->set(‘datos_post’,$resultado);
}
[/code]

Del resto del funcionamiento de éste sistema de cache no hay que preocuparse ya que en cakephp está muy bien integrada la API que hay en php para las conexiones al servicio de memcache, la inserccion de nuevos datos y la devolución de los mismos.

Como he dicho antes, si usais cakephp,una pieza clave de la arquitectura de la aplicación es la cache, y si es memcache mucho mejor!!

5 comentarios en «usando memcached con cakephp»

  1. hola, siempre que he intentado configurar con memcache me sale este error
    Undefined index: prefix [CORE/Cake/Cache/Cache.php]
    sabes que podría ser??? te lo agradecería mucho

    Responder
  2. Hola Pedro! Pregunta, haces referencia a “Cache:: ..” en un archivo de configuración. Por lo tanto Cache es una clase php que se debe incluir en Cake. donde o como la incluyes?. Es decir ¿Cómo sabe CakePhp donde esta la clase Cache para poder instanciar sus metodos?

    Un saludo.

    Responder

Deja un comentario

Enable Notifications    Ok No thanks