Blog de Gonzalo

CACHEAR CONTENIDO CON MEMCACHED

Memcached se usa para guardar en caché de datos u objetos reduciendo elacceso a base de datos y así optimizar la herramienta web y no perder eficiencia ya que el acceso a la caché de memcached sería más rápido que el acceso a base de datos.
Su funcionamiento se basa en una tabla hash distribuida a lo largo de varios equipos. Conforme ésta se va llenando, los datos que más tiempo llevan sin ser utilizados se borran para dar espacio a los nuevos. Normalmente, las aplicaciones comprueban primero si pueden acceder a los datos a través de Memcached antes de recurrir a un almacén de datos más lento, como puede ser una base de datos.
He cogido esta definicion de wikipedia ya que creo que es buena y sirve para entender bien lo que es memcached.
Yo he usado memcached en algunos proyectos y la verdad que si que se nota la eficiencia en el acceso a datos, aunque no hay que abusar en el cacheado de datos y solo cachear los datos más frecuentes.
Os pongo unos ejemplos sencillitos para entender su funcionamiento:



//Se crea el objeto memcached
$memcache_obj = new Memcache;
//Conexion al servidor memcached ip 11211 es el puerto que usa
$memcache_obj->connect('127.0.0.1', 11211);
$arr1 = array(1,2,3,4,5,6,7,8,9,10);
$arr2 = array(11,12,13,14,15,16,17,18,19,20);
//En este caso se guardan dos arrays
$memcache_obj->set("arr1",$arr1);
$memcache_obj->set("arr2",$arr2);
//Se almacena el valor almacenado con valor "arr1"
$valor1 = $memcache_obj->get("arr1");
//Se muestra el valor almacenado con valor "arr1"
var_dump($valor1 );
//Esta función reemplaza el contenido de "arr1" por el contenido de $arr2 (no de la variable memcached arr2 que en este caso coincide)
//Recupera $arr1 y se muestra su contenido viendo que ahora están los valores de $arr2
$memcache_obj->replace("arr1",$arr2);
$replace = $memcache_obj->get("arr1");
var_dump($replace);
//Se define la clave foo
$memcache_obj->set('foo', 'abc');
//Se añaden valores, al final, a la clave foo
$memcache_obj->append('foo', 'xyz');
//muestra 'abcxyz' var_dump($memcache_obj->get('foo'));
//borra el contenido de foo $memcache_obj->delete('foo'); //al mostrarlo devuelve un false var_dump($memcache_obj->get('foo')); //Define foo otra vez con nuevos valores $m->set('foo', 'abc'); //Se añaden valores, al principio, a la clave foo
$m->prepend('foo', 'xyz'); //muestra 'xyzabc' var_dump($m->get('foo'));

Hay más funcionalidades pero creo que estas son las más útiles y las que más se usan.

Compartir en twitter