SlideShare uma empresa Scribd logo
1 de 77
Baixar para ler offline
Acelerando sitios webs con
       Memcached


               César D. Rodas
             crodas@member.fsf.org



            http://cesar.la/talks/


    Latinoware 2008, Foz do Iguaçu, Brasil



                                             1
Quién les habla?
Participante Google Summer of Code 2008
  • Plug-in para WordPress
Quién les habla?
Participante Google Summer of Code 2008
  • Plug-in para WordPress

Ganador del PHP Innovation award 2007
Quién les habla?
Participante Google Summer of Code 2008
  • Plug-in para WordPress

Ganador del PHP Innovation award 2007
Centro Nacional de Computacion
Quién les habla?
Participante Google Summer of Code 2008
  • Plug-in para WordPress

Ganador del PHP Innovation award 2007
Centro Nacional de Computacion
www.CesaRodas.com
Quién les habla?
       Participante Google Summer of Code 2008
             • Plug-in para WordPress

       Ganador del PHP Innovation award 2007
       Centro Nacional de Computacion
       www.CesaRodas.com




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                        2
Qué es Cache?
Datos duplicados, almacenados en un médio más rápido.
Qué es Cache?
Datos duplicados, almacenados en un médio más rápido.
Mejor solución para el cuello de botella.
Qué es Cache?
Datos duplicados, almacenados en un médio más rápido.
Mejor solución para el cuello de botella.
Cuello de botella de la web (la base de datos).
Qué es Cache?
Datos duplicados, almacenados en un médio más rápido.
Mejor solución para el cuello de botella.
Cuello de botella de la web (la base de datos).
  • Autenticación.
Qué es Cache?
Datos duplicados, almacenados en un médio más rápido.
Mejor solución para el cuello de botella.
Cuello de botella de la web (la base de datos).
  • Autenticación.
  • SQL.
Qué es Cache?
Datos duplicados, almacenados en un médio más rápido.
Mejor solución para el cuello de botella.
Cuello de botella de la web (la base de datos).
  • Autenticación.
  • SQL.
           Compilación.
Qué es Cache?
Datos duplicados, almacenados en un médio más rápido.
Mejor solución para el cuello de botella.
Cuello de botella de la web (la base de datos).
  • Autenticación.
  • SQL.
           Compilación.
           Ejecución del código.
Qué es Cache?
Datos duplicados, almacenados en un médio más rápido.
Mejor solución para el cuello de botella.
Cuello de botella de la web (la base de datos).
  • Autenticación.
  • SQL.
           Compilación.
           Ejecución del código.
           Bloqueo de IO.
Qué es Cache?
Datos duplicados, almacenados en un médio más rápido.
Mejor solución para el cuello de botella.
Cuello de botella de la web (la base de datos).
  • Autenticación.
  • SQL.
           Compilación.
           Ejecución del código.
           Bloqueo de IO.
           Acceso al disco.
Qué es Cache?
       Datos duplicados, almacenados en un médio más rápido.
       Mejor solución para el cuello de botella.
       Cuello de botella de la web (la base de datos).
             • Autenticación.
             • SQL.
                           Compilación.
                           Ejecución del código.
                           Bloqueo de IO.
                           Acceso al disco.




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                         3
Que no es Memcached!
Base de datos.
Que no es Memcached!
Base de datos.
El único médio de cacheo.
Que no es Memcached!
Base de datos.
El único médio de cacheo.
La mejor alternativa para sitios pequeños-medianos.
Que no es Memcached!
Base de datos.
El único médio de cacheo.
La mejor alternativa para sitios pequeños-medianos.
Solución económica.
Que no es Memcached!
Base de datos.
El único médio de cacheo.
La mejor alternativa para sitios pequeños-medianos.
Solución económica.
Complicada de implementar.
Que no es Memcached!
Base de datos.
El único médio de cacheo.
La mejor alternativa para sitios pequeños-medianos.
Solución económica.
Complicada de implementar.
Seguro.
Que no es Memcached!
       Base de datos.
       El único médio de cacheo.
       La mejor alternativa para sitios pequeños-medianos.
       Solución económica.
       Complicada de implementar.
       Seguro.




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                       4
Que es Memcached!
Cache distribuido en memoria RAM.
Que es Memcached!
Cache distribuido en memoria RAM.
Creado por y para LiveJournal.
Que es Memcached!
Cache distribuido en memoria RAM.
Creado por y para LiveJournal.
Escalable.
Que es Memcached!
       Cache distribuido en memoria RAM.
       Creado por y para LiveJournal.
       Escalable.
       Utilizado por los grandes.
             • LiveJournal.
             • Wikipedia.
             • Slashdot.
             • SourceForge.
             • ...




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                         5
El servidor
Óptima administración de memoria (Slab Allocation).
El servidor
Óptima administración de memoria (Slab Allocation).
Utiliza libevent.
El servidor
Óptima administración de memoria (Slab Allocation).
Utiliza libevent.
Protocolo simple y sencillo.
  • Nada de XML ni nada complicado de parsear.
El servidor
Óptima administración de memoria (Slab Allocation).
Utiliza libevent.
Protocolo simple y sencillo.
  • Nada de XML ni nada complicado de parsear.

No existen bloqueos de IO.
El servidor
Óptima administración de memoria (Slab Allocation).
Utiliza libevent.
Protocolo simple y sencillo.
  • Nada de XML ni nada complicado de parsear.

No existen bloqueos de IO.
Cada servidor es totalmente independiente.
  • No se comparten datos.
  • No hay un punto centralizado.
  • Sencillo, efectivo y rápido.
El servidor
       Óptima administración de memoria (Slab Allocation).
       Utiliza libevent.
       Protocolo simple y sencillo.
             • Nada de XML ni nada complicado de parsear.

       No existen bloqueos de IO.
       Cada servidor es totalmente independiente.
             • No se comparten datos.
             • No hay un punto centralizado.
             • Sencillo, efectivo y rápido.

       Cuenta con hash interno.




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                       6
El cliente
Elige a que servidor conectarse.
El cliente
Elige a que servidor conectarse.
Serializa los objetos del lenguaje.
El cliente
       Elige a que servidor conectarse.
       Serializa los objetos del lenguaje.
       Comprimir datos.




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                  7
8
Otras utilidades de Memcached
       Compartir información entre servidores.
             • Sesiones.
             • Informacion utilizada frecuentemente.
             • ..




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                     9
Monitoreando Memcached
       Cacti
             • http://dealnews.com/developers/cacti/memcached.html

       Ganglia
             • http://ganglia.wiki.sourceforge.net/

       ...




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                               10
11
Alternativas
MySQL query cache.
  • Útil si la tabla no varía frecuentemente.
Alternativas
MySQL query cache.
  • Útil si la tabla no varía frecuentemente.

Bases de datos replicadas.
  • Se pueden desentralizar las lecturas pero no las escrituras.
Alternativas
MySQL query cache.
  • Útil si la tabla no varía frecuentemente.

Bases de datos replicadas.
  • Se pueden desentralizar las lecturas pero no las escrituras.
  • Las escrituras bloquean las lecturas.
Alternativas
MySQL query cache.
  • Útil si la tabla no varía frecuentemente.

Bases de datos replicadas.
  • Se pueden desentralizar las lecturas pero no las escrituras.
  • Las escrituras bloquean las lecturas.

Memoria Compartida.
  • El cache no puede ser distribuido.
Alternativas
MySQL query cache.
  • Útil si la tabla no varía frecuentemente.

Bases de datos replicadas.
  • Se pueden desentralizar las lecturas pero no las escrituras.
  • Las escrituras bloquean las lecturas.

Memoria Compartida.
  • El cache no puede ser distribuido.
  • Muy costoso gracias a los bloqueos.
Alternativas
MySQL query cache.
  • Útil si la tabla no varía frecuentemente.

Bases de datos replicadas.
  • Se pueden desentralizar las lecturas pero no las escrituras.
  • Las escrituras bloquean las lecturas.

Memoria Compartida.
  • El cache no puede ser distribuido.
  • Muy costoso gracias a los bloqueos.

File cache.
  • El cache no puede ser distribuido.
Alternativas
MySQL query cache.
  • Útil si la tabla no varía frecuentemente.

Bases de datos replicadas.
  • Se pueden desentralizar las lecturas pero no las escrituras.
  • Las escrituras bloquean las lecturas.

Memoria Compartida.
  • El cache no puede ser distribuido.
  • Muy costoso gracias a los bloqueos.

File cache.
  • El cache no puede ser distribuido.
  • Mejor cache para sitios pequeños (< 70000 hits por dia).
Alternativas
       MySQL query cache.
             • Útil si la tabla no varía frecuentemente.

       Bases de datos replicadas.
             • Se pueden desentralizar las lecturas pero no las escrituras.
             • Las escrituras bloquean las lecturas.

       Memoria Compartida.
             • El cache no puede ser distribuido.
             • Muy costoso gracias a los bloqueos.

       File cache.
             • El cache no puede ser distribuido.
             • Mejor cache para sitios pequeños (< 70000 hits por dia).




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                                        12
Alternativas
File cache en quot;disco RAMquot;.
Alternativas
File cache en quot;disco RAMquot;.
  • Alternativa muy rápida y costosa.
Alternativas
File cache en quot;disco RAMquot;.
  • Alternativa muy rápida y costosa.
  • GNU/Linux:
    /sbin/mke2fs -q -m 0 /dev/ram0
    /bin/mount /dev/ram0 /mnt/cache
    /bin/chown httpd:root /mnt/cache
    /bin/chmod 0750 /mnt/cache
Alternativas
       File cache en quot;disco RAMquot;.
             • Alternativa muy rápida y costosa.
             • GNU/Linux:
               /sbin/mke2fs -q -m 0 /dev/ram0
               /bin/mount /dev/ram0 /mnt/cache
               /bin/chown httpd:root /mnt/cache
               /bin/chmod 0750 /mnt/cache
             • FreeBSD (y posiblemente *BSD):
               /sbin/mdconfig -a -t malloc -s 256M -u 10
               /sbin/newfs -U /dev/md10
               /sbin/mount /dev/md10 /mnt/cache




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                     13
Otros tips utiles
Eliminar los whitespaces.
  • Si quot;ahorramosquot; 30 bytes por página, en 10,000,000 visitas serían ∼286MB.
Otros tips utiles
Eliminar los whitespaces.
  • Si quot;ahorramosquot; 30 bytes por página, en 10,000,000 visitas serían ∼286MB.

Paginas comprimidas.
  • On the fly ( ob start(quot;ob gzhandlerquot;) )
  • Cacheado.
  • mod gzip.
  • ...
Otros tips utiles
Eliminar los whitespaces.
  • Si quot;ahorramosquot; 30 bytes por página, en 10,000,000 visitas serían ∼286MB.

Paginas comprimidas.
  • On the fly ( ob start(quot;ob gzhandlerquot;) )
  • Cacheado.
  • mod gzip.
  • ...

Contenido estático... al servidor multi-threded.
Otros tips utiles
Eliminar los whitespaces.
  • Si quot;ahorramosquot; 30 bytes por página, en 10,000,000 visitas serían ∼286MB.

Paginas comprimidas.
  • On the fly ( ob start(quot;ob gzhandlerquot;) )
  • Cacheado.
  • mod gzip.
  • ...

Contenido estático... al servidor multi-threded.
APC.
Otros tips utiles
       Eliminar los whitespaces.
             • Si quot;ahorramosquot; 30 bytes por página, en 10,000,000 visitas serían ∼286MB.

       Paginas comprimidas.
             • On the fly ( ob start(quot;ob gzhandlerquot;) )
             • Cacheado.
             • mod gzip.
             • ...

       Contenido estático... al servidor multi-threded.
       APC.
       Squid Reverse proxy.




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                                                    14
Talk is cheap
show me the code!




                    15
PHPCached vs. PHP Memcached
PHPCached es un poco más lento.
PHPCached vs. PHP Memcached
PHPCached es un poco más lento.
  • Si pensamos así deberíamos programar en C.
PHPCached vs. PHP Memcached
PHPCached es un poco más lento.
  • Si pensamos así deberíamos programar en C.
  • Se puede solucionar con APC.
PHPCached vs. PHP Memcached
PHPCached es un poco más lento.
  • Si pensamos así deberíamos programar en C.
  • Se puede solucionar con APC.

PHPCached puede ser modificado fácilmente.
PHPCached vs. PHP Memcached
PHPCached es un poco más lento.
  • Si pensamos así deberíamos programar en C.
  • Se puede solucionar con APC.

PHPCached puede ser modificado fácilmente.
En PHPCached se puede registrar un quot;callbackquot; para el balanceo.
PHPCached vs. PHP Memcached
PHPCached es un poco más lento.
  • Si pensamos así deberíamos programar en C.
  • Se puede solucionar con APC.

PHPCached puede ser modificado fácilmente.
En PHPCached se puede registrar un quot;callbackquot; para el balanceo.
PHPCached tiene cacheo en archivos con la misma API.
  • Para sitios pequeños-medianos.
  • Ayuda a la transición (del file-based a memcached).




                                                             16
API sencilla, similar a DBA
 <?php
/* Objeto phpcached */
$cache = new phpcached;
API sencilla, similar a DBA
 <?php
/* Objeto phpcached */
$cache = new phpcached;
/* Agregar la lista de servidores */
$cache->addServer(quot;10.1.1.1quot;,3128);
$cache->addServer(quot;10.1.1.1quot;,3129);
$cache->addServer(quot;10.1.1.2quot;,3128);
API sencilla, similar a DBA
 <?php
/* Objeto phpcached */
$cache = new phpcached;
/* Agregar la lista de servidores */
$cache->addServer(quot;10.1.1.1quot;,3128);
$cache->addServer(quot;10.1.1.1quot;,3129);
$cache->addServer(quot;10.1.1.2quot;,3128);
/*
** A utilizar Phpcached
** La funcion quot;do long process()quot; sólo será
** ejecutada cada 10 minutos
*/
if (($value=$cache->get(quot;keyquot;)) === false) {
      $value = do long process();
      $cache->set(quot;keyquot;,$value,600);
}
 return $value;
?>


Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                          17
Y si usas PHP5
 <?php
/* definimos la lista de servidores */
define('PHPCACHED SERVER1','10.1.1.1:3128');
define('PHPCACHED SERVER2','10.1.1.1:3129');
define('PHPCACHED SERVER3','10.1.1.2:3128');

$cache = new arraycached(600);
if (!isset($cache[$key])) {
      $cache[$key] = do long process();
}
return $cache[$key];
?>




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                      18
Jugando con PHPCached
<?php
 $cache = new phpcached;
 $cache->addServer(quot;10.1.1.1quot;,3128);
$cache->addServer(quot;10.1.1.1quot;,3129);
$cache->addServer(quot;10.1.1.2quot;,3128);
Jugando con PHPCached
<?php
 $cache = new phpcached;
 $cache->addServer(quot;10.1.1.1quot;,3128);
$cache->addServer(quot;10.1.1.1quot;,3129);
$cache->addServer(quot;10.1.1.2quot;,3128);
/*
** Definimos una funcion PHP que
** selecionara que Memcached utilizar
** basado en la longitud del Key.
*/
function balancer($iServer,$zKey) {
return strlen($zKey)%$iServer;
}
Jugando con PHPCached
<?php
 $cache = new phpcached;
 $cache->addServer(quot;10.1.1.1quot;,3128);
$cache->addServer(quot;10.1.1.1quot;,3129);
$cache->addServer(quot;10.1.1.2quot;,3128);
/*
** Definimos una funcion PHP que
** selecionara que Memcached utilizar
** basado en la longitud del Key.
*/
function balancer($iServer,$zKey) {
return strlen($zKey)%$iServer;
}
/*
** Ahora agregamos nuestra funcion
** como balancer.
/
$cache->setBalancer(quot;balancerquot;);
?>

Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                      19
Alternativas para sitios pequeños
 <?php
/* Objeto phpcached */
$cache = new phpcached;
Alternativas para sitios pequeños
 <?php
/* Objeto phpcached */
$cache = new phpcached;
/* Agregar directorio de destino */
$cache->addFolder(quot;/var/tmp/cachedquot;);
Alternativas para sitios pequeños
 <?php
/* Objeto phpcached */
$cache = new phpcached;
/* Agregar directorio de destino */
$cache->addFolder(quot;/var/tmp/cachedquot;);
/* A utilizar Phpcached */
/* La funcion quot;do long process()quot; sólo será */
/* ejecutada cada 10 minutos */
if (($value=$cache->get(quot;keyquot;)) === false) {
      $value = do long process();
      $cache->set(quot;keyquot;,$value,600);
}
 return $value;
?>




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                      20
Muchas gracias! Preguntas?
         Cesar Rodas.
         crodas@member.fsf.org
          http://cesarodas.com/


             Mi blog.
            http://cesar.la/




                                  21
Resources
Memcached
  • http://www.danga.com/memcached
  • http://tangent.org/552/libmemcached.html

Mamcached Mail list.
  • http://lists.danga.com/mailman/listinfo/memcached

PHPCached
  • http://www.phpclasses.org/phpcached




                                                        22
Powered by...




Cesar D. Rodas - http://cesar.la/ - L EX
                                    AT                     23

Mais conteúdo relacionado

Semelhante a Optimizando Sitios webs con Memcached

Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónLoja Valle de Tecnología
 
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...Luis Bosque
 
Pentest - El Arte de la Guerra
Pentest - El Arte de la GuerraPentest - El Arte de la Guerra
Pentest - El Arte de la GuerraLuis Cortes Zavala
 
Introducción al mundo NoSQL
Introducción al mundo NoSQLIntroducción al mundo NoSQL
Introducción al mundo NoSQLCésar Rodas
 
Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorAlberto Gimeno
 
Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaDavid J. Brenes
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magentoOnestic
 
Arquitectura y escalabilidad básica para entornos cloud
Arquitectura y escalabilidad básica para entornos cloudArquitectura y escalabilidad básica para entornos cloud
Arquitectura y escalabilidad básica para entornos cloudXavier Ruiz Royo
 
NO SQL y Cassandra
NO SQL y CassandraNO SQL y Cassandra
NO SQL y CassandraAlvaro C
 
Administración de base de datos oracle - sesion 8
Administración de base de datos oracle - sesion 8Administración de base de datos oracle - sesion 8
Administración de base de datos oracle - sesion 8Sefira111
 
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITEC
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITECArquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITEC
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITECAlejandro Corpeño
 
Petabytes De Informacion Repensando El Modelamiento De Datos
Petabytes De Informacion Repensando El Modelamiento De DatosPetabytes De Informacion Repensando El Modelamiento De Datos
Petabytes De Informacion Repensando El Modelamiento De DatosEQ SOFT EIRL
 
LaserVaultBackup (LVB) en Español
LaserVaultBackup (LVB) en EspañolLaserVaultBackup (LVB) en Español
LaserVaultBackup (LVB) en EspañolBrad Jensen
 
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?Martin Siniawski
 
Charla OWASP
Charla OWASPCharla OWASP
Charla OWASPalexav8
 
Big table por Matias tesoriero
Big table por Matias tesorieroBig table por Matias tesoriero
Big table por Matias tesorieromtesoriero
 
Taller Redis
Taller RedisTaller Redis
Taller Redisbetabeers
 

Semelhante a Optimizando Sitios webs con Memcached (20)

Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-Distribución
 
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
 
Pentest - El Arte de la Guerra
Pentest - El Arte de la GuerraPentest - El Arte de la Guerra
Pentest - El Arte de la Guerra
 
Introducción al mundo NoSQL
Introducción al mundo NoSQLIntroducción al mundo NoSQL
Introducción al mundo NoSQL
 
Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valor
 
Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de Persistencia
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
La Caché
La CachéLa Caché
La Caché
 
Arquitectura y escalabilidad básica para entornos cloud
Arquitectura y escalabilidad básica para entornos cloudArquitectura y escalabilidad básica para entornos cloud
Arquitectura y escalabilidad básica para entornos cloud
 
NO SQL y Cassandra
NO SQL y CassandraNO SQL y Cassandra
NO SQL y Cassandra
 
Foro de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondoForo de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondo
 
Administración de base de datos oracle - sesion 8
Administración de base de datos oracle - sesion 8Administración de base de datos oracle - sesion 8
Administración de base de datos oracle - sesion 8
 
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITEC
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITECArquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITEC
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITEC
 
Petabytes De Informacion Repensando El Modelamiento De Datos
Petabytes De Informacion Repensando El Modelamiento De DatosPetabytes De Informacion Repensando El Modelamiento De Datos
Petabytes De Informacion Repensando El Modelamiento De Datos
 
LaserVaultBackup (LVB) en Español
LaserVaultBackup (LVB) en EspañolLaserVaultBackup (LVB) en Español
LaserVaultBackup (LVB) en Español
 
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
 
Charla OWASP
Charla OWASPCharla OWASP
Charla OWASP
 
Big table por Matias tesoriero
Big table por Matias tesorieroBig table por Matias tesoriero
Big table por Matias tesoriero
 
Taller Redis
Taller RedisTaller Redis
Taller Redis
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
 

Último

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 

Último (16)

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 

Optimizando Sitios webs con Memcached

  • 1. Acelerando sitios webs con Memcached César D. Rodas crodas@member.fsf.org http://cesar.la/talks/ Latinoware 2008, Foz do Iguaçu, Brasil 1
  • 2. Quién les habla? Participante Google Summer of Code 2008 • Plug-in para WordPress
  • 3. Quién les habla? Participante Google Summer of Code 2008 • Plug-in para WordPress Ganador del PHP Innovation award 2007
  • 4. Quién les habla? Participante Google Summer of Code 2008 • Plug-in para WordPress Ganador del PHP Innovation award 2007 Centro Nacional de Computacion
  • 5. Quién les habla? Participante Google Summer of Code 2008 • Plug-in para WordPress Ganador del PHP Innovation award 2007 Centro Nacional de Computacion www.CesaRodas.com
  • 6. Quién les habla? Participante Google Summer of Code 2008 • Plug-in para WordPress Ganador del PHP Innovation award 2007 Centro Nacional de Computacion www.CesaRodas.com Cesar D. Rodas - http://cesar.la/ - L EX AT 2
  • 7. Qué es Cache? Datos duplicados, almacenados en un médio más rápido.
  • 8. Qué es Cache? Datos duplicados, almacenados en un médio más rápido. Mejor solución para el cuello de botella.
  • 9. Qué es Cache? Datos duplicados, almacenados en un médio más rápido. Mejor solución para el cuello de botella. Cuello de botella de la web (la base de datos).
  • 10. Qué es Cache? Datos duplicados, almacenados en un médio más rápido. Mejor solución para el cuello de botella. Cuello de botella de la web (la base de datos). • Autenticación.
  • 11. Qué es Cache? Datos duplicados, almacenados en un médio más rápido. Mejor solución para el cuello de botella. Cuello de botella de la web (la base de datos). • Autenticación. • SQL.
  • 12. Qué es Cache? Datos duplicados, almacenados en un médio más rápido. Mejor solución para el cuello de botella. Cuello de botella de la web (la base de datos). • Autenticación. • SQL. Compilación.
  • 13. Qué es Cache? Datos duplicados, almacenados en un médio más rápido. Mejor solución para el cuello de botella. Cuello de botella de la web (la base de datos). • Autenticación. • SQL. Compilación. Ejecución del código.
  • 14. Qué es Cache? Datos duplicados, almacenados en un médio más rápido. Mejor solución para el cuello de botella. Cuello de botella de la web (la base de datos). • Autenticación. • SQL. Compilación. Ejecución del código. Bloqueo de IO.
  • 15. Qué es Cache? Datos duplicados, almacenados en un médio más rápido. Mejor solución para el cuello de botella. Cuello de botella de la web (la base de datos). • Autenticación. • SQL. Compilación. Ejecución del código. Bloqueo de IO. Acceso al disco.
  • 16. Qué es Cache? Datos duplicados, almacenados en un médio más rápido. Mejor solución para el cuello de botella. Cuello de botella de la web (la base de datos). • Autenticación. • SQL. Compilación. Ejecución del código. Bloqueo de IO. Acceso al disco. Cesar D. Rodas - http://cesar.la/ - L EX AT 3
  • 17. Que no es Memcached! Base de datos.
  • 18. Que no es Memcached! Base de datos. El único médio de cacheo.
  • 19. Que no es Memcached! Base de datos. El único médio de cacheo. La mejor alternativa para sitios pequeños-medianos.
  • 20. Que no es Memcached! Base de datos. El único médio de cacheo. La mejor alternativa para sitios pequeños-medianos. Solución económica.
  • 21. Que no es Memcached! Base de datos. El único médio de cacheo. La mejor alternativa para sitios pequeños-medianos. Solución económica. Complicada de implementar.
  • 22. Que no es Memcached! Base de datos. El único médio de cacheo. La mejor alternativa para sitios pequeños-medianos. Solución económica. Complicada de implementar. Seguro.
  • 23. Que no es Memcached! Base de datos. El único médio de cacheo. La mejor alternativa para sitios pequeños-medianos. Solución económica. Complicada de implementar. Seguro. Cesar D. Rodas - http://cesar.la/ - L EX AT 4
  • 24. Que es Memcached! Cache distribuido en memoria RAM.
  • 25. Que es Memcached! Cache distribuido en memoria RAM. Creado por y para LiveJournal.
  • 26. Que es Memcached! Cache distribuido en memoria RAM. Creado por y para LiveJournal. Escalable.
  • 27. Que es Memcached! Cache distribuido en memoria RAM. Creado por y para LiveJournal. Escalable. Utilizado por los grandes. • LiveJournal. • Wikipedia. • Slashdot. • SourceForge. • ... Cesar D. Rodas - http://cesar.la/ - L EX AT 5
  • 28. El servidor Óptima administración de memoria (Slab Allocation).
  • 29. El servidor Óptima administración de memoria (Slab Allocation). Utiliza libevent.
  • 30. El servidor Óptima administración de memoria (Slab Allocation). Utiliza libevent. Protocolo simple y sencillo. • Nada de XML ni nada complicado de parsear.
  • 31. El servidor Óptima administración de memoria (Slab Allocation). Utiliza libevent. Protocolo simple y sencillo. • Nada de XML ni nada complicado de parsear. No existen bloqueos de IO.
  • 32. El servidor Óptima administración de memoria (Slab Allocation). Utiliza libevent. Protocolo simple y sencillo. • Nada de XML ni nada complicado de parsear. No existen bloqueos de IO. Cada servidor es totalmente independiente. • No se comparten datos. • No hay un punto centralizado. • Sencillo, efectivo y rápido.
  • 33. El servidor Óptima administración de memoria (Slab Allocation). Utiliza libevent. Protocolo simple y sencillo. • Nada de XML ni nada complicado de parsear. No existen bloqueos de IO. Cada servidor es totalmente independiente. • No se comparten datos. • No hay un punto centralizado. • Sencillo, efectivo y rápido. Cuenta con hash interno. Cesar D. Rodas - http://cesar.la/ - L EX AT 6
  • 34. El cliente Elige a que servidor conectarse.
  • 35. El cliente Elige a que servidor conectarse. Serializa los objetos del lenguaje.
  • 36. El cliente Elige a que servidor conectarse. Serializa los objetos del lenguaje. Comprimir datos. Cesar D. Rodas - http://cesar.la/ - L EX AT 7
  • 37. 8
  • 38. Otras utilidades de Memcached Compartir información entre servidores. • Sesiones. • Informacion utilizada frecuentemente. • .. Cesar D. Rodas - http://cesar.la/ - L EX AT 9
  • 39. Monitoreando Memcached Cacti • http://dealnews.com/developers/cacti/memcached.html Ganglia • http://ganglia.wiki.sourceforge.net/ ... Cesar D. Rodas - http://cesar.la/ - L EX AT 10
  • 40. 11
  • 41. Alternativas MySQL query cache. • Útil si la tabla no varía frecuentemente.
  • 42. Alternativas MySQL query cache. • Útil si la tabla no varía frecuentemente. Bases de datos replicadas. • Se pueden desentralizar las lecturas pero no las escrituras.
  • 43. Alternativas MySQL query cache. • Útil si la tabla no varía frecuentemente. Bases de datos replicadas. • Se pueden desentralizar las lecturas pero no las escrituras. • Las escrituras bloquean las lecturas.
  • 44. Alternativas MySQL query cache. • Útil si la tabla no varía frecuentemente. Bases de datos replicadas. • Se pueden desentralizar las lecturas pero no las escrituras. • Las escrituras bloquean las lecturas. Memoria Compartida. • El cache no puede ser distribuido.
  • 45. Alternativas MySQL query cache. • Útil si la tabla no varía frecuentemente. Bases de datos replicadas. • Se pueden desentralizar las lecturas pero no las escrituras. • Las escrituras bloquean las lecturas. Memoria Compartida. • El cache no puede ser distribuido. • Muy costoso gracias a los bloqueos.
  • 46. Alternativas MySQL query cache. • Útil si la tabla no varía frecuentemente. Bases de datos replicadas. • Se pueden desentralizar las lecturas pero no las escrituras. • Las escrituras bloquean las lecturas. Memoria Compartida. • El cache no puede ser distribuido. • Muy costoso gracias a los bloqueos. File cache. • El cache no puede ser distribuido.
  • 47. Alternativas MySQL query cache. • Útil si la tabla no varía frecuentemente. Bases de datos replicadas. • Se pueden desentralizar las lecturas pero no las escrituras. • Las escrituras bloquean las lecturas. Memoria Compartida. • El cache no puede ser distribuido. • Muy costoso gracias a los bloqueos. File cache. • El cache no puede ser distribuido. • Mejor cache para sitios pequeños (< 70000 hits por dia).
  • 48. Alternativas MySQL query cache. • Útil si la tabla no varía frecuentemente. Bases de datos replicadas. • Se pueden desentralizar las lecturas pero no las escrituras. • Las escrituras bloquean las lecturas. Memoria Compartida. • El cache no puede ser distribuido. • Muy costoso gracias a los bloqueos. File cache. • El cache no puede ser distribuido. • Mejor cache para sitios pequeños (< 70000 hits por dia). Cesar D. Rodas - http://cesar.la/ - L EX AT 12
  • 49. Alternativas File cache en quot;disco RAMquot;.
  • 50. Alternativas File cache en quot;disco RAMquot;. • Alternativa muy rápida y costosa.
  • 51. Alternativas File cache en quot;disco RAMquot;. • Alternativa muy rápida y costosa. • GNU/Linux: /sbin/mke2fs -q -m 0 /dev/ram0 /bin/mount /dev/ram0 /mnt/cache /bin/chown httpd:root /mnt/cache /bin/chmod 0750 /mnt/cache
  • 52. Alternativas File cache en quot;disco RAMquot;. • Alternativa muy rápida y costosa. • GNU/Linux: /sbin/mke2fs -q -m 0 /dev/ram0 /bin/mount /dev/ram0 /mnt/cache /bin/chown httpd:root /mnt/cache /bin/chmod 0750 /mnt/cache • FreeBSD (y posiblemente *BSD): /sbin/mdconfig -a -t malloc -s 256M -u 10 /sbin/newfs -U /dev/md10 /sbin/mount /dev/md10 /mnt/cache Cesar D. Rodas - http://cesar.la/ - L EX AT 13
  • 53. Otros tips utiles Eliminar los whitespaces. • Si quot;ahorramosquot; 30 bytes por página, en 10,000,000 visitas serían ∼286MB.
  • 54. Otros tips utiles Eliminar los whitespaces. • Si quot;ahorramosquot; 30 bytes por página, en 10,000,000 visitas serían ∼286MB. Paginas comprimidas. • On the fly ( ob start(quot;ob gzhandlerquot;) ) • Cacheado. • mod gzip. • ...
  • 55. Otros tips utiles Eliminar los whitespaces. • Si quot;ahorramosquot; 30 bytes por página, en 10,000,000 visitas serían ∼286MB. Paginas comprimidas. • On the fly ( ob start(quot;ob gzhandlerquot;) ) • Cacheado. • mod gzip. • ... Contenido estático... al servidor multi-threded.
  • 56. Otros tips utiles Eliminar los whitespaces. • Si quot;ahorramosquot; 30 bytes por página, en 10,000,000 visitas serían ∼286MB. Paginas comprimidas. • On the fly ( ob start(quot;ob gzhandlerquot;) ) • Cacheado. • mod gzip. • ... Contenido estático... al servidor multi-threded. APC.
  • 57. Otros tips utiles Eliminar los whitespaces. • Si quot;ahorramosquot; 30 bytes por página, en 10,000,000 visitas serían ∼286MB. Paginas comprimidas. • On the fly ( ob start(quot;ob gzhandlerquot;) ) • Cacheado. • mod gzip. • ... Contenido estático... al servidor multi-threded. APC. Squid Reverse proxy. Cesar D. Rodas - http://cesar.la/ - L EX AT 14
  • 58. Talk is cheap show me the code! 15
  • 59. PHPCached vs. PHP Memcached PHPCached es un poco más lento.
  • 60. PHPCached vs. PHP Memcached PHPCached es un poco más lento. • Si pensamos así deberíamos programar en C.
  • 61. PHPCached vs. PHP Memcached PHPCached es un poco más lento. • Si pensamos así deberíamos programar en C. • Se puede solucionar con APC.
  • 62. PHPCached vs. PHP Memcached PHPCached es un poco más lento. • Si pensamos así deberíamos programar en C. • Se puede solucionar con APC. PHPCached puede ser modificado fácilmente.
  • 63. PHPCached vs. PHP Memcached PHPCached es un poco más lento. • Si pensamos así deberíamos programar en C. • Se puede solucionar con APC. PHPCached puede ser modificado fácilmente. En PHPCached se puede registrar un quot;callbackquot; para el balanceo.
  • 64. PHPCached vs. PHP Memcached PHPCached es un poco más lento. • Si pensamos así deberíamos programar en C. • Se puede solucionar con APC. PHPCached puede ser modificado fácilmente. En PHPCached se puede registrar un quot;callbackquot; para el balanceo. PHPCached tiene cacheo en archivos con la misma API. • Para sitios pequeños-medianos. • Ayuda a la transición (del file-based a memcached). 16
  • 65. API sencilla, similar a DBA <?php /* Objeto phpcached */ $cache = new phpcached;
  • 66. API sencilla, similar a DBA <?php /* Objeto phpcached */ $cache = new phpcached; /* Agregar la lista de servidores */ $cache->addServer(quot;10.1.1.1quot;,3128); $cache->addServer(quot;10.1.1.1quot;,3129); $cache->addServer(quot;10.1.1.2quot;,3128);
  • 67. API sencilla, similar a DBA <?php /* Objeto phpcached */ $cache = new phpcached; /* Agregar la lista de servidores */ $cache->addServer(quot;10.1.1.1quot;,3128); $cache->addServer(quot;10.1.1.1quot;,3129); $cache->addServer(quot;10.1.1.2quot;,3128); /* ** A utilizar Phpcached ** La funcion quot;do long process()quot; sólo será ** ejecutada cada 10 minutos */ if (($value=$cache->get(quot;keyquot;)) === false) { $value = do long process(); $cache->set(quot;keyquot;,$value,600); } return $value; ?> Cesar D. Rodas - http://cesar.la/ - L EX AT 17
  • 68. Y si usas PHP5 <?php /* definimos la lista de servidores */ define('PHPCACHED SERVER1','10.1.1.1:3128'); define('PHPCACHED SERVER2','10.1.1.1:3129'); define('PHPCACHED SERVER3','10.1.1.2:3128'); $cache = new arraycached(600); if (!isset($cache[$key])) { $cache[$key] = do long process(); } return $cache[$key]; ?> Cesar D. Rodas - http://cesar.la/ - L EX AT 18
  • 69. Jugando con PHPCached <?php $cache = new phpcached; $cache->addServer(quot;10.1.1.1quot;,3128); $cache->addServer(quot;10.1.1.1quot;,3129); $cache->addServer(quot;10.1.1.2quot;,3128);
  • 70. Jugando con PHPCached <?php $cache = new phpcached; $cache->addServer(quot;10.1.1.1quot;,3128); $cache->addServer(quot;10.1.1.1quot;,3129); $cache->addServer(quot;10.1.1.2quot;,3128); /* ** Definimos una funcion PHP que ** selecionara que Memcached utilizar ** basado en la longitud del Key. */ function balancer($iServer,$zKey) { return strlen($zKey)%$iServer; }
  • 71. Jugando con PHPCached <?php $cache = new phpcached; $cache->addServer(quot;10.1.1.1quot;,3128); $cache->addServer(quot;10.1.1.1quot;,3129); $cache->addServer(quot;10.1.1.2quot;,3128); /* ** Definimos una funcion PHP que ** selecionara que Memcached utilizar ** basado en la longitud del Key. */ function balancer($iServer,$zKey) { return strlen($zKey)%$iServer; } /* ** Ahora agregamos nuestra funcion ** como balancer. / $cache->setBalancer(quot;balancerquot;); ?> Cesar D. Rodas - http://cesar.la/ - L EX AT 19
  • 72. Alternativas para sitios pequeños <?php /* Objeto phpcached */ $cache = new phpcached;
  • 73. Alternativas para sitios pequeños <?php /* Objeto phpcached */ $cache = new phpcached; /* Agregar directorio de destino */ $cache->addFolder(quot;/var/tmp/cachedquot;);
  • 74. Alternativas para sitios pequeños <?php /* Objeto phpcached */ $cache = new phpcached; /* Agregar directorio de destino */ $cache->addFolder(quot;/var/tmp/cachedquot;); /* A utilizar Phpcached */ /* La funcion quot;do long process()quot; sólo será */ /* ejecutada cada 10 minutos */ if (($value=$cache->get(quot;keyquot;)) === false) { $value = do long process(); $cache->set(quot;keyquot;,$value,600); } return $value; ?> Cesar D. Rodas - http://cesar.la/ - L EX AT 20
  • 75. Muchas gracias! Preguntas? Cesar Rodas. crodas@member.fsf.org http://cesarodas.com/ Mi blog. http://cesar.la/ 21
  • 76. Resources Memcached • http://www.danga.com/memcached • http://tangent.org/552/libmemcached.html Mamcached Mail list. • http://lists.danga.com/mailman/listinfo/memcached PHPCached • http://www.phpclasses.org/phpcached 22
  • 77. Powered by... Cesar D. Rodas - http://cesar.la/ - L EX AT 23