2009-12-20 28 views
7

Estoy usando Memcache para almacenar objetos en caché, pero me gustaría agregar además un acelerador de código de operación como APC. Dado que ambos implican el almacenamiento en caché, no estoy seguro de si se "pisarán los pies", es decir, no estoy seguro de si Memcache ya es un acelerador de código OP.¿Puedo usar APC Y memcached en el mismo servidor?

¿Alguien puede aclarar? Me gustaría usarlos a ambos, un poco por cosas diferentes. Memcache para almacenar en caché mis objetos y APC para aceleración de código

Respuesta

4

sí, puede usarlos juntos al mismo tiempo.

+0

@SankalpSingha ¿por qué es ridículo? ¿No deberían usarse al mismo tiempo? Quiero usar APC para el almacenamiento en caché de mi código de operación y memcached para mi almacenamiento de sesión php. ¿No es esta una buena idea y por qué? –

+0

@SankalpSingha ¡Respuesta ridícula! ¿Qué tal si explicas por qué ... –

19

Memcache es más parecido a un caché de objetos distribuidos que a algo como APC o XCache, que almacena el bytecode de PHP en la memoria para evitar tener que analizarlo cada vez. Sus propósitos principales son diferentes.

Por ejemplo, si tenía una consulta de base de datos muy intensiva en CPU que la gente a menudo solicitaba, podía almacenar en caché el objeto resultante en Memcache y luego consultarlo en lugar de volver a ejecutar esa consulta todo el tiempo.

APC & XCache tiene características de caché de objetos similares, pero está limitado a la máquina host. ¿Qué pasa si desea 10 servidores diferentes para que todos tengan acceso a ese objeto sin tener que volver a hacer la consulta para cada servidor? Simplemente los diriges a tu servidor Memcache y te vas. Aún obtendrás un beneficio si solo tienes un solo servidor porque el uso de Memcache te ayudará a escalar en el futuro si necesitas extender más cajas.

Lo más importante a tener en cuenta es si cree que su aplicación va a tener que escalar. Memcache tiene más sobrecarga, ya que tiene que usar una conexión TCP para acceder a ella, en comparación con solo una llamada a función para objetos compartidos APC/Xcache.

Sin embargo, Memcache tiene las siguientes ventajas:

  • más rápido que el disco o volver a ejecutar la consulta.
  • Escala a varios servidores.
  • Funciona con muchos idiomas diferentes, sus objetos no están bloqueados en PHP + APC/Xcache solamente.
  • Todos los procesos/idiomas tienen acceso a los mismos objetos, por lo que no tiene que preocuparse si sus procesos secundarios de PHP tienen un caché de objetos vacío o no. Esto puede no ser tan importante si estás ejecutando PHP-FPM.

En la mayoría de los casos, recomendaría el almacenamiento en caché los objetos en Memcache ya que no es mucho más difícil & es más flexible para el futuro.

Tenga en cuenta que esto es solo con respecto al almacenamiento en caché de objetos. Memcache hace NOT tiene cualquier bytecode o características de aceleración de PHP, por lo que lo ejecutaría lado a lado con APC o Xcache

+0

"Aún obtienes un beneficio si solo tienes un solo servidor porque el uso de Memcache te ayudará a escalar en el futuro si necesitas extender más cajas". - Entonces, ¿no hay beneficio en un solo servidor? – nickf

+0

@nickf, agregó más detalles a mi respuesta. – Klinky

+2

+1. Otro punto para agregar: APC no maneja alta concurrencia así como también hace memcached.Usamos tanto memcached como APC en producción, para almacenar datos de aplicaciones apropiados, y estamos considerando comenzar a utilizar Redis también (para persistencia y operaciones de lista). En niveles altos de concurrencia, cada uno es bueno en ciertas cosas que los otros no lo son. –

Cuestiones relacionadas