¿Por qué memcache?
En muchos proyectos de software (incluyendo Web) se realizan consultas a la base de datos que un lapso de tiempo siempre arrojan el mismo resultado; pero como no teníamos con una forma de almacenar esa información para disponer de ella cada vez que la necesitamos sin tener que realizar la consulta en el motor de bases de datos nuevamente, entonces simplemente llamábamos un query X cantidad de veces sin importar los recursos que tomaba la ejecución de dicha consulta. Con el fin de evitar ese desperdicio de recursos es que ha nacido memcache.
¿Qué es memcache?
Memcache es un servicio para almacenar objetos en memoria RAM y que pueden ser utilizados por múltiples procesos sin importar si se encuentran en la misma máquina o no. El objetivo principal por el que surgió memcache es el de evitar peticiones incesarías a la base de datos.
¿Cómo lo instalo y configuro?
Para unix:
$ sudo apt-get install memcached
$ sudo /etc/init.d/memcached restart
$ sudo apt-get install php5-memcache
Activar la extensión editando el archivo /etc/php5/conf.d/memcache.ini y descomentando la línea extension.
; uncomment the next line to enable the module
extension=memcache.so
Por último reiniciar apache
Para Windows:
Bajar e instalar: http://allegiance.chi-town.com/MemCacheDManager.aspx
Activar la extensión editando el archivo G:\wamp\bin\php\php5.2.6\php.ini y descomentando la línea extension.
extension=php_memcache.dll
Por último reiniciar apache
Memcache es un servicio/daemon que se ejecuta por consola de la siguiente manera:
/usr/bin/memcached -d -m 2048 -u root
-d : corre como servicio.
-m : limite de memoria en MB que le permitiremos usar a memecache
-u : identidad de quien ejecuta el proceso
-p : puerto (por default es 11211)
-c : limite de conexiones simultaneas (default es 1024)
-h : muestra ayudas y otros parámetros de uso
¿Cómo lo uso?
function memcache_test(){ $memcache = new Memcache(); $memcache->connect("localhost",11211); $key = "todos_los_registros_de_tabla_datos"; $datos = $memcache->get($key); if (!$datos){ echo "No esta cachado... hitting db e insertando en memcache. <br>"; $result = mysql_query("SELECT * FROM datos"); while( ($dato=mysql_fetch_assoc($result))!=null){ $datos[]=$dato; } $memcache->set($key,$datos,false,60*60*24); //cachados por 24 horas print_r($datos); }else{ echo "Ya se encuentra en memoria:<br>"; print_r($datos); } }
Gracias luis por la info
el archivo «php_memcache.dll» puede ser descargado dependiendo de tu versión de php: http://downloads.php.net/pierre/
🙂 salud.
Amigo muy buen tutorial pero al correr la aplicaicon me sale este error.
Fatal error: Class ‘Memcache’ not found in C:\wamp\www\Intranet\WepTest.php on line 6
Espero una respuesta tuya..
logica_razon@hotmail.com
Es interesante el uso de memcached pero daria suna aplciacion mas real de consultas a base de datos para poder comprender el uso de esta libreria.
Otra pregunta , espero que me conestes pronto.En que momento mencached se conecta la base de datos , si en el codigo que muestras no esta presenta la bd pero solo veo tablas.Podrias explciarme esto por favor?