Memcache, un sistema de cache distribuido, que se aloja en memoria y es de proposito general. La idea es almacenar en memoria cadenas de bytes (strings) que ya fueron procesados para no procesarlos nuevamente.
Por ejemplo, cachear resultados de queries, compartir datos entre servidores, utilizarlo como almacenamiento de sessiones, etc.
Hay que tener en cuenta que estos datos son almacenados en memoria RAM, la cual es volátil y si apagamos el servidor o el deamon de memcached estos datos se perderan! (siempre hay que tener un plan de contingencia para levantar rápidamente los datos a memcache una vez reiniciado el server)
Su funcionamiento es sencillo, a cada item que se desea cachear se almacenan en una tabla hash, al cual se le asigna una clave para su posterior recuperacion. Todos estos datos se almacenan donde su estructura llamada slabs. Los slab tienen tamaño variable para optimizar el espacio en memoria, pero su tamaño mayor es de 1mb, por lo cual, este es el tamaño mas grande que se puede almacenar.
Tambien para cada item almacenado, memcached permite controlar su tiempo de vida (es independiente para cada item), una vez finalizado memcache lo elimina.
Otra de las caracteristicas de memcache es la escalabilidad, podemos contar con un pool de servidores en distintas (o no) maquinas para soportar una cantidad elevada de peticiones concurrentes.
Instalación
Para instalar en ubuntu basta con
sudo apt-get install memcached
Configuración
Si usamos apt-get para instalar memcache encontraremos en la carpeta /usr/share/memcached un archivo llamado memcached.conf.default con un ejemplo de archivo de configuracion. El archivo real se encuentra en /etc/memcached.conf.
Los parametros que se pueden configurar son los siguientes:
-m indica a memcache cuanta memoria utilizar para almacenar los items (default 64mb)
-d indica a memcache que se ejecute como deamon
-v el clasico verbose
-vv verbose mas completo
-vvv verbose muuuuuucho mas completo
-p puerto por el cual memcache escucha (default 11211)
-l ip por el cual se comunica memecache (default 127.0.0.1)
-c cantidad maxima de conexiones simultaneas (default 1024)
-u indica con que usuario correra memcache (default root)
logfile path para el archivo log


