2010-06-18 24 views

Respuesta

7

Según mi experiencia personal, he encontrado que la memcached no es tan rápida como la memoria caché de disco. Creo que esto se debe al almacenamiento en caché del disco IO del SO, pero Memcached permite un caché "escalable", lo que significa que si tienes más de 1 servidor accediendo a los mismos datos de caché, se escalará (especialmente porque memcached tiene una sobrecarga de CPU muy baja a PHP). La única forma de permitir que más de 1 máquina acceda a una memoria caché de disco a la vez es el montaje en red, que seguramente va a matar la velocidad de los accesos. También otra cosa de la que debe preocuparse con el almacenamiento en caché de archivos es la recolección de elementos no utilizados para evitar que el disco se sature.

Según la escala de su sitio, es posible que desee cambiar de opinión más adelante, por lo que, independientemente de la elección que haga, utilice un contenedor de caché para poder cambiar fácilmente su método. Zend proporciona un good API.

2

Las lecturas van a tener la misma velocidad (dado que el sistema operativo almacenará en caché los archivos a los que se accede con frecuencia) ... La diferencia será con las escrituras. Con memcached, todo lo que necesita hacer es escribir el ram. Pero con el almacenamiento de archivos, se vuelve un poco más complicado. Si tiene habilitado el caché de escritura, será casi tan rápido. Pero la mayoría de los servidores lo tienen apagado (a menos que tengan un caché respaldado por batería) para escrituras más confiables en caso de falla de energía. Por lo tanto, si el suyo no está utilizando una caché de escritura, se requerirá que la escritura se complete en el disco (puede tomar 5+ ms en unidades de grado de servidor, posiblemente más en hardware de escritorio) antes de regresar. Así que escribir archivos puede ser significativamente más lento que memcached.

Pero hay otro caviat. Con los archivos, cuando desee escribir, tendrá que bloquear el archivo usted mismo. Esto significa que si dos procesos intentan escribir en el mismo archivo, las escrituras deberían completarse en serie. Con memcached, esas dos escrituras se insertan en una cola y suceden en el orden recibido, pero el proceso de escritura (PHP) no necesita esperar la confirmación real ...

Cuestiones relacionadas