Quiero usar memcached
http://www.danga.com/memcached/
Lo he instalado a través de yum install memcached
Pero ahora necesito conectarme a PHP, ¿y hay una extensión llamada memcache y una llamada memcached? ARGH
http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php
¿Podría alguien señalarme en la dirección correcta aquí ... cuál va a funcionar?
Además, ¿debo abrir algún puerto para que funcione aunque sea local? Después de ejecutarlo, intento telnet 127.0.0.1 11211 y me niegan la conexión.
Respuestas:
La respuesta corta: Cualquiera de los dos es lo que está buscando, pero mi primera opción sería memcache (la primera que enumeró), basada exclusivamente en su uso correcto de la nomenclatura.
Ahora he aquí cómo llegué a esa conclusión:
Aquí hay un resumen rápido de las convenciones de nomenclatura (para aquellos que no están familiarizados), que explica la frustración del autor de la pregunta: Para muchas aplicaciones * nix, la pieza que hace el trabajo de backend se llama "demonio" (piense en "servicio" en Windows- tierra), mientras que la interfaz o la aplicación cliente es lo que usa para controlar o acceder al demonio. El demonio se suele llamar igual que el cliente, con la letra "d" adjunta. Por ejemplo, "imap" sería un cliente que se conecta al demonio "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):
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 demonio real llamado memcached . Observe también que en la introducción a memcached (el módulo php) , hace mención de libmemcached , que es la biblioteca compartida (o API) que utiliza el módulo para acceder al demonio memcached:
En resumen, ambos son funcionalmente iguales, pero simplemente tienen autores diferentes, y el nombre de uno es más apropiado que el otro.
fuente
memcached
admite tokens cas, por ejemplo,memcache
no. Si los necesita, sabe qué (mal nombrado o no) elegir.Probablemente quiera ver la comparación de clientes PHP .
Versión corta: ambos funcionarán y, en la mayoría de los casos, a cualquiera de ellos le irá bien.
Con respecto al otro tema: Sí, debería poder hacerlo
telnet 127.0.0.1 11211
. Muy pocos cortafuegos impedirían que localhost se comunique consigo mismo. Si no puede conectarse, verifique que memcached realmente se esté ejecutandops auxwww | grep memcached
, lo que también le mostrará los argumentos de la línea de comandos utilizados para iniciar memcached. Uno de los argumentos debe ser-p 11211
u otro número de puerto. Veaman memcached
el significado de todos los argumentos posibles.fuente
ps auxwww | grep memcached
?Como sugiere el enlace de Nate, ambos funcionan perfectamente bien para un uso simple. Sin embargo, memcached admite más funciones que le permiten obtener el máximo rendimiento de memcached. El protocolo binario reduce la cantidad de datos necesarios para ser enviados entre el cliente y el servidor. Multigets y multisets le permiten obtener / configurar múltiples elementos al mismo tiempo. Si descubres que necesitas más empuje de memcache, memcached es el mejor módulo. El uso de libmemcached sugiere que la biblioteca en sí misma posiblemente esté más optimizada que la versión solo de PHP.
Memcached es un módulo más reciente en comparación con memcache, que solo se lanzó hace 8 meses. Si necesita apuntar a una versión anterior de PHP, entonces solo puede usar memcache.
fuente
Se llama
php-memcache
al más viejo y con errores porque parecía el nombre más apropiado. La versión más nueva y mejor desarrollada independientemente por la gente de Digg fue nombradaphp-memcached
en cambio en interés de la desambiguación.Las personas que recomendarían elegir uno sobre el otro basándose únicamente en la exactitud del nombre realmente no tienen por qué ofrecer asesoramiento técnico.
fuente
Habiendo usado php-memcache recientemente, tendría que señalarle php-memcached.
Aquí hay un par de razones fuera de mi cabeza ...
1) No hay getErrorCode () o un método equivalente, por lo que si get () devuelve FALSE, no tendrá idea de si eso se debe a que el valor almacenado en memcache es falso o si hubo algún tipo de problema.
2) Su algoritmo de hash para hashing consistente parece diferir de otras implementaciones, como las muchas bibliotecas de clientes creadas a partir de libmemcached. Esto significa que si desea utilizar el mismo clúster de memcache con varios idiomas, es probable que tenga problemas en los que almacenará un valor con el cliente PHP y otros clientes no lo encontrarán.
fuente
Ambos tienen problemas a partir de hoy. PECL / memcache es antiguo y confiable, con algunas excepciones donde está desactualizado. PECL / memcached 1.x es beta en el mejor de los casos. Algunas funciones no se ocupan de teclas numéricas, pierden conexiones cuando se usan conexiones persistentes. Algunos (¿todos?) Se están arreglando en GitHub y se lanzarán en algún momento en 2.x, pero no hoy. Para una revisión más detallada ver http://brian.moonspot.net/php-memcached-issues
fuente
Estoy trabajando en un libro "Expert PHP and MySQL". Escribí casi lo mismo sobre las diferencias. Lo que recomendé fue PECL / memcached. # 1 - se envuelve alrededor de una biblioteca C de alto rendimiento con todas las funciones # 2 - se mantiene más recientemente. # 3 - más características. Sin menosprecio a PECL / memcache.
fuente
He tenido algunos problemas bastante graves con Drupal 6 y php-pecl-memcached en los que los tiempos de respuesta se retrasaron hasta 5 ms por llamada y provocarían que un sitio en particular creara 5 veces más llamadas que antes del cambio a php-pecl-memcached . Cambiar a php-pecl-memcache solucionó todos los problemas; latencia y llamadas adicionales.
Esta respuesta está aquí únicamente para ayudar a aquellos que usan Drupal 6 y posiblemente Drupal 7.
fuente
Y hay otros clientes para memcached, consulte http://code.google.com/p/memcached/wiki/Clients
Cortar y pegar desde la web:
http://www.php.net/manual/en/intro.memcache.php
http://www.php.net/manual/en/intro.memcached.php
http://pecl.php.net/package/memcached "Extensión PHP para interactuar con memcached a través de la biblioteca libmemcached" Esta extensión usa la biblioteca libmemcached para proporcionar API para comunicarse con los servidores memcached. https://github.com/andreiz/php-memcached
http://pecl.php.net/package/memcache "memcached extension" Memcached es un demonio de caché diseñado especialmente para aplicaciones web dinámicas para disminuir la carga de la base de datos almacenando objetos en la memoria. Esta extensión le permite trabajar con memcached a través de prácticas interfaces de procedimiento y OO.
http://code.google.com/p/memcached/wiki/PHPClientComparison
fuente