2009-12-01 16 views
106

Duplicar posible:
Using Memcache vs Memcached with PHPMemcache vs. Memcached

Alguien me puede explicar la diferencia entre Memcache y Memcached en el entorno de PHP? ¿Cuáles son las ventajas de una sobre la otra? ¿Puede sugerir también los criterios utilizados para elegir entre uno u otro?

+6

No pertenece a serverfault; esto es sobre los módulos Memcache y memcached PHP; no el daemon mismo. –

+0

http://serverfault.com/questions/63383/memcache-vs-memcached – Toad

Respuesta

96

(En parte Stolen from ServerFault)

creo que ambos son funcionalmente lo mismo, sino que simplemente tienen diferentes autores, y el que es simplemente el nombre más apropiado que el otro.


Aquí sirve como base rápida en las convenciones de nomenclatura (para los que no conocen), lo que explica la frustración por el autor de la pregunta pregunta: ¿Para muchas aplicaciones * nix, la pieza que hace el trabajo de back-end se llama "daemon" (piense en "servicio" en Windows-land), mientras que la interfaz o aplicación cliente es lo que usa para controlar o acceder al daemon. El daemon a menudo se denomina igual que el cliente, con la letra "d" añadida. Por ejemplo, "imap" sería un cliente que se conecta al daemon "imapd".

Esta convención de nomenclatura claramente se está cumpliendo por Memcache cuando se lee la introducción al módulo de Memcache (nótese la diferencia entre Memcache y memcached en este extracto):

módulo de Memcache proporciona mano objeto procesal y orientado interfaz a memcached, altamente eficaz caché daemon, que era especialmente diseñado para reducir la carga de la base de datos en web dinámico aplicaciones.

El módulo Memcache también proporciona un controlador de sesión (memcache).

Se puede encontrar más información sobre memcached can en » http://www.danga.com/memcached/.

La frustración aquí es causada por el autor de la extensión PHP que fue mal llamada memcached, ya que comparte el mismo nombre que el daemon real llamado memcached. Nótese también que en la introducción de memcached (el módulo php), se hace mención de libmemcached, que es la biblioteca compartida (o API) que es utilizado por el módulo para acceder al demonio de Memcached:

memcached es una alto rendimiento, memoria caché de objetos distribuidos sistema , de naturaleza genérica, pero destinado a acelerar las aplicaciones web dinámicas al aliviando la carga de la base de datos.

Esta extensión usa la biblioteca libmemcached para proporcionar API para comunicándose con los servidores de memcached. También proporciona un controlador de sesión (memcached).

Se puede encontrar información sobre libmemcached en » http://tangent.org/552/libmemcached.html.

+0

Tenía entendido que MemcacheD tiene la capacidad de trabajar en la capa de la base de datos con los comandos de MySQL. De esta forma, su código ni siquiera necesita llamar a métodos especiales de almacenamiento en caché. Todo está completo en la base de datos? –

+1

Entonces, la diferencia entre Memcache vs. Memcached es que tienen diferentes autores? – kta

+1

sí, tienen diferentes autores y una interfaz diferente. – Jasen

103

No son idénticos. Memcache es más antiguo pero tiene algunas limitaciones. Estaba usando muy bien en mi aplicación hasta que me di cuenta de que no puedes almacenar el literal FALSE en caché. El valor FALSE devuelto desde la memoria caché es el mismo que FALSO devuelto cuando no se encuentra un valor en la memoria caché. No hay forma de verificar cuál es cuál. Memcached tiene un método adicional (entre otros) Memcached::getResultCode que le indicará si se encontró la clave.

Debido a esta limitación cambié a almacenar matrices vacías en lugar de FALSE en caché. Todavía estoy usando Memcache, pero solo quería poner esta información a disposición de las personas que están decidiendo.

+0

@Mike, ¿las limitaciones todavía existen o ** están corregidas **? – Pacerier

+13

@Mike, explicaste la diferencia perfecta entre Memcache y Memcached. Ambos tienen una diferencia muy básica al almacenar el valor. Memcache considera principalmente cada valor como una cadena, mientras que Memcached almacena su tipo original de valor. ¡Apúntate para tu respuesta! – NullPointer

+2

@La gente de Pacerier se quejaría si se solucionaran esas limitaciones. – Jasen

Cuestiones relacionadas