Memcached es un sistema de cache que se ejecuta en modo servicio y almacena datos en memoria RAM, posee librerías en los diferentes lenguajes de programación y el almacenamiento lo realiza por medio de asociaciones de series de cadenas hash.
Cuando se debe utilizar Memcached
Memcached se debe utiliza en cualquier aplicación que posea base de datos y realice consultas, ya que nos ayudaria a la velocidad de la aplicación.
Como funciona Memcached
Memcached funciona almacenando cualquier dato que le solicitemos en memoria ram, el mejor ejemplo para mejorar el rendimiendo de una aplicación es el siguiente:
– Tenemos una tabla en nuestra base de datos y en esta vamos a realizar varias operaciones y veremos como se comporta Memcached.
PHP: Agregamos un registro a la tabla
Php+Memcache: En nuestro Memcached se debe actualizar nuestros nuevos valores
PHP: Consultar los registros de la tabla
Php+Memcache: En vez de ir a nuestra base de datos el php se queda consultando la data que tiene en memcached directamente en la memoria ram osea mucho más rapido.
PHP: Actualizamos un registro en la tabla
Php+Memcache: En nuestro Memcached se debe actualizar nuestros nuevos valores
PHP: Consultar nuevamente los registros de la tabla
Php+Memcache: En vez de ir a nuestra base de datos el php se queda consultando la data que tiene en memcached.
PHP: Borramos un registro en la tabla
Php+Memcache: En nuestro Memcached se debe actualizar nuestros nuevos valores
PHP: Consultar nuevamente los registros de la tabla
Php+Memcache: En vez de ir a nuestra base de datos el php se queda consultando la data que tiene en memcached.
Este seria un proceso básico en Memcached ahora vamos a ver como se puede hacer un ejemplo de Memcached con PHP.
Ejemplo Memcached con PHP
Funciones para utilizar en nuestro ejemplo
<?php global $memcache; $memcache = new Memcache; function getCache($key) { global $memcache; return ($memcache) ? $memcache->get($key) : false; } function setCache($key,$object,$timeout = 60) { global $memcache; return ($memcache) ? $memcache->set($key,$object,MEMCACHE_COMPRESSED,$timeout) : false; } function mysql_query_cache($sql,$linkIdentifier = false,$timeout = 60) { if (($cache = getCache(md5("mysql_query" . $sql))) !== false) { $cache = false; $r = ($linkIdentifier !== false) ? mysql_query($sql,$linkIdentifier) : mysql_query($sql); if (is_resource($r) && (($rows = mysql_num_rows($r)) !== 0)) { for ($i=0;$i<$rows;$i++) { $fields = mysql_num_fields($r); $row = mysql_fetch_array($r); for ($j=0;$j<$fields;$j++) { if ($i === 0) { $columns[$j] = mysql_field_name($r,$j); } $cache[$i][$columns[$j]] = $row[$j]; } } if (!setCache(md5("mysql_query" . $sql),$cache,$timeout)) { # Error en Memcache } } } return $cache; } ?>
Forma de llamar a nuestras funciones php con memcache
<?php $sql = " SELECT `dataID`, `dataTitle` FROM `tbldata` WHERE `dataTypeID` BETWEEN 2 AND 2093 AND `dataStatusID` IN (1,2,3,4) AND `dataTitle` LIKE '%something%' ORDER BY `dataDate` DESC LIMIT 10 "; # Antes: Sin Memcached $rSlowQuery = mysql_query($sql); # $rSlowQuery is a MySQL resource $rows = mysql_num_rows($rSlowQuery); for ($i=0;$i<$rows;$i++) { $dataID = intval(mysql_result($rSlowQuery,$i,"dataID")); $dataTitle = mysql_result($rSlowQuery,$i,"dataTitle"); echo "<a href=\"/somewhere/$dataID\">$dataTitle</a><br />\n"; } # Despues Con Memcache $rSlowQuery = mysql_query_cache($sql); # $rSlowQuery is an array $rows = count($rSlowQuery); for ($i=0;$i<$rows;$i++) { $dataID = intval($rSlowQuery[$i]["dataID"]); $dataTitle = $rSlowQuery[$i]["dataTitle"]; echo "<a href=\"/somewhere/$dataID\">$dataTitle</a><br />\n"; } ?>
Por favor avísanos si hay algún detalle que no esté claro o si tienes alguna duda sobre este procedimiento. Puedes dejarnos un comentario aquí debajo y en breve te daremos una respuesta.
hola me gustaria sber para que es cada uno necesito guardar el nombre de usuario y la contraseña en la ram pero no entiendo el codigo !! agradeceria tu respuesta gracias
Hola Sergio,
En este caso solo debes utilizar tu sql en este bloque de codigo y al importar las 3 funciones que estan arriba
$sql = »
SELECT `dataID`, `dataTitle`
FROM `tbldata`
WHERE `dataTypeID` BETWEEN 2 AND 2093
AND `dataStatusID` IN (1,2,3,4)
AND `dataTitle` LIKE ‘%something%’
ORDER BY `dataDate` DESC
LIMIT 10
«;
$rSlowQuery = mysql_query_cache($sql);
# $rSlowQuery is an array
$rows = count($rSlowQuery);
for ($i=0;$i<$rows;$i++) { $dataID = intval($rSlowQuery[$i]["dataID"]); $dataTitle = $rSlowQuery[$i]["dataTitle"]; echo "$dataTitle
\n»;
}
Asi lo puedes utilizar en tu proyecto!
Saludos.
Hola Sergio,
En este caso solo debes utilizar tu sql en este bloque de codigo y al importar las 3 funciones que estan arriba:
$sql = ”
SELECT `dataID`, `dataTitle`
FROM `tbldata`
WHERE `dataTypeID` BETWEEN 2 AND 2093
AND `dataStatusID` IN (1,2,3,4)
AND `dataTitle` LIKE ‘%something%’
ORDER BY `dataDate` DESC
LIMIT 10
“;
$rSlowQuery = mysql_query_cache($sql);
# $rSlowQuery is an array
$rows = count($rSlowQuery);
for ($i=0;$i<$rows;$i++) {
$dataID = intval($rSlowQuery[$i]["dataID"]);
$dataTitle = $rSlowQuery[$i]["dataTitle"];
echo "$dataTitle
n”;
}
Asi lo puedes utilizar en tu proyecto!
Saludos,
Andrés.-
podrias ayudarme a hacerlo es que soy un poco nulo en esto y lo necesito !! porfavor nunca he hecho o utilizado localstorage y me es dificil entenderlo
Ante todo gracias.
El problema es que hay tanto html mezclado que no queda claro como se haría. Estaría mucho mejor un ejemplo simple en php puro.
Un saludo!