php - soporta - ¿Cómo funciona memcache con MySQL?
optimizar consultas mysql explain (3)
Hay varios ejemplos de cómo funciona memcache. Here está uno de los enlaces.
En segundo lugar, Memcache puede trabajar con o sin MySQL.
Almacena en caché los objetos que están en PHP, ya sea que provengan de MySQL o de cualquier otro lugar, si es un Objeto PHP, se puede almacenar en MemCache.
APC te da más funcionalidad que Memcache. Además del almacenamiento / almacenamiento en caché de objetos PHP, también almacena en caché los códigos de operación ejecutables por máquina de PHP para que sus archivos de PHP no pasen por los procesos de carga en la memoria-> Comedados, sino que ejecutan directamente el código de operación ya compilado de la memoria.
Estoy tratando de entender (y probablemente implementar) memcached en nuestro env.
Tenemos 4 servidores web en loadbalancer que ejecutan una gran aplicación web desarrollada en PHP. Ya estamos utilizando APC. Quiero ver cómo funciona memcached? Al menos, puede ser que no entiendo cómo funciona el almacenamiento en caché.
Tenemos algunas consultas dinámicas complejas que combinan varias tablas para extraer datos. Cada vez, los datos serán de diferentes bases de datos de clientes y los datos seguirán cambiando. Según tengo entendido, si algunos datos se almacenan en caché, y si la solicitud es la misma la próxima vez, se devolverán los mismos datos. (O puedo estar completamente equivocado aquí).
¿Cómo funciona todo este memcache (o, para el caso, cualquier cosa de almacenamiento en caché)?
Si sus datos siguen cambiando (entre solicitudes), entonces el almacenamiento en caché es inútil, ya que esos datos serán obsoletos. Pero la mayoría de las veces (apuesto incluso en su caché) múltiples solicitudes a la base de datos resultan en el mismo conjunto de datos, en cuyo caso es muy útil un caché (en la memoria).
PD: Hice una búsqueda rápida en Google y encontré este video sobre memcached que tiene una calidad bastante buena => http://www.bestechvideos.com/2009/03/21/railslab-scaling-rails-episode-8-memcached . El único problema podría ser que habla sobre Ruby on Rails (que tampoco uso mucho, pero es muy fácil de entender). Esperemos que te ayude a comprender mejor el concepto.
La memoria caché, en general, es un motor de almacenamiento de clave / valor muy rápido donde puede almacenar valores (generalmente en serie) por una clave predeterminada, de modo que puede recuperar los valores almacenados con la misma clave.
En relación con MySQL, escribiría el código de su aplicación de tal manera que verifique la presencia de datos en la memoria caché antes de enviar una solicitud a la base de datos. Si se encontró una coincidencia (existe una clave coincidente), entonces tendría acceso a los datos asociados a la clave. El objetivo es no enviar una solicitud a la base de datos más costosa si se puede evitar.
Un ejemplo (solo demostrativo):
$cache = new Memcached();
$cache->addServer(''servername'', 11211);
$myCacheKey = ''my_cache_key'';
$row = $cache->get($myCacheKey);
if (!$row) {
// Issue painful query to mysql
$sql = "SELECT * FROM table WHERE id = :id";
$dbo->prepare($sql);
$stmt->bindValue('':id'', $someId, PDO::PARAM_INT);
$row = $stmt->fetch(PDO::FETCH_OBJ);
$cache->set($myCacheKey, serialize($row));
}
// Now I have access to $row, where I can do what I need to
// And for subsequent calls, the data will be pulled from cache and skip
// the query altogether
var_dump(unserialize($row));
Echa un vistazo a los documentos PHP en memcached para obtener más información, hay algunos buenos ejemplos y comentarios.