memcache example php memcached

php - example - ¿Cuándo debo usar Memcache en lugar de Memcached?



php memcached example (4)

Esto es 2013. Olvídate de los comentarios de 2009. Del mismo modo, si está ejecutando una gran cantidad de tráfico, ni siquiera contemple cómo hacerlo con un memcache basado en Windows. Cuando se trata de una gran escala (más de 500 servidores web front-end) y más de 20 servidores de base de datos back-end y replicantes (mysql y mssql mix), una granja de servidores memcached (12 servidores en grupo) admite múltiples aplicaciones OLTP de gran volumen que responden a 25K ~ 40K mc-> obtener llamadas por segundo. Estas llamadas son las que NO tienen que llegar a una base de datos.

En mi humilde opinión, este uso de memcached proporcionó SERIOUS $$$, $$$ ahorros en CAPEX para nuevos servidores y licencias de DB, así como en contratos de soporte para grandes diseños comerciales.

Parece que PHP tiene dos bibliotecas de memcache llamadas memcache y memcached . ¿Cuál es la diferencia y cómo sabes cuál usar? ¿Está uno desactualizado? Parece que memcached ofrece más métodos, así que asumo que eso significa que ha tenido el mayor desarrollo, pero también parece requerir bibliotecas externas de C / C ++, así que no estoy seguro de poder instalarlo.

¡Parece que memcache ha existido por más tiempo, no requiere bibliotecas adicionales, y tiene archivos binarios precompilados para incluso ventanas! Pensaría que sería la mejor opción por ahora. Sin embargo, siendo nuevo en memcached (servidor), no estoy seguro de si hay algunas características super importantes en memcached (php) que hagan que valga la pena el problema adicional.


Memcached es una API más nueva, también proporciona memcached como proveedor de sesión, lo que podría ser excelente si tiene una granja de servidores.

Después de que la versión aún es muy baja, 0.2, pero he usado ambas y no encontré ningún problema importante, por lo que iría a memcached ya que es nueva.


La biblioteca de clientes de Memcached se lanzó recientemente como estable. Está siendo utilizado por digg (fue desarrollado para digg por Andrei Zmievski, ahora ya no con digg) e implementa mucho más protocolo de memcached que el antiguo cliente de memcache. Las características más importantes que tiene memcached son:

  1. Cas tokens . Esto hizo mi vida mucho más fácil y es un sistema preventivo fácil para datos obsoletos. Cada vez que extraiga algo del caché, puede recibir con él un token de cas (un número doble). Puede usar ese token para guardar su objeto actualizado. Si nadie más actualizó el valor mientras su hilo se estaba ejecutando, el intercambio tendrá éxito. De lo contrario, se creó un token de cas más nuevo y se le obliga a volver a cargar los datos y a guardarlos nuevamente con el token nuevo.
  2. Leer a través de callbacks es lo mejor desde el pan rebanado. Se ha simplificado gran parte de mi código.
  3. getDelayed() es una buena característica que puede reducir el tiempo que tiene que esperar su script para que los resultados regresen del servidor.
  4. Si bien se supone que el servidor memcached es muy estable, no es el más rápido. Puede usar el protocolo binario en lugar de ASCII con el cliente más nuevo.
  5. Cada vez que guarda datos complejos en memcached, el cliente solía realizar la serialización del valor (que es lento), pero ahora con el cliente de memcached, tiene la opción de usar igbinary . Hasta ahora no he tenido la oportunidad de probar qué tan alto puede ser este aumento de rendimiento.

Todos estos puntos fueron suficientes para cambiarme al cliente más nuevo y puedo decirle que funciona como un encanto. Existe una dependencia externa de la biblioteca libmemcached , pero aún así hemos logrado instalarla en Ubuntu y Mac OSX, por lo que no hay problemas hasta ahora.

Si decides actualizar a la biblioteca más nueva, te sugiero que actualices a la última versión del servidor, ya que también tiene algunas características interesantes. Necesitará instalar libevent para compilarlo, pero en Ubuntu no fue mucho problema.

No he visto ningún framework que haya recogido al nuevo cliente de memcached hasta el momento (aunque no los rastro), pero supongo que Zend se incorporará pronto.

ACTUALIZAR

Zend Framework 2 tiene un adaptador para Memcached que se puede encontrar here


Cuando se usa Windows, la comparación se corta: memcache parece ser el único cliente disponible.