Después de asociar una conexión de MySQL con una conexión de Memcache utilizando
mysqnd_memcache_set(), el complemento intentará reemplazar
de forma transparente las sentencias SELECT
de SQL
por un acceso a memcache. Para este propósito, el complemento monitoriza
todas las sentencias SQL ejecutadas e intenta hacer coincidir el string de la sentencia
con MYSQLND_MEMCACHE_DEFAULT_REGEXP
.
En caso de coincidir, el complemento de memcache para mysqlnd comprueba si la
SELECT
está accediendo solamente a columnas de una tabla de correspondencias y
la cláusula WHERE
está limitada a una búsqueda de clave única.
En el caso de la tabla tabla SQL de ejemplo, el complemento usrá la intefaz de Memcache
del servidor de MySQL para obtener los resultados de una consulta SQL como
SELECT f1, f2, f3 WHERE id = n
.
Ejemplo #1 Ejemplo básico
<?php
$mysqli = new mysqli("host", "usuario", "contraseña", "base_de_datos");
$memc = new Memcached();
$memc->addServer("host", 11211);
mysqlnd_memcache_set($mysqli, $memc);
/*
Esta es una consulta a la tabla test que emplea id como clave de la cláusula WHERE
y que accede a los campos f1, f2 y f3. Por tanto, mysqlnd_memcache
la interceptará y la redirigirá mediante memcache.
*/
$resultado = $mysqli->query("SELECT f1, f2, f3 FROM test WHERE id = 1");
while ($fila = $resultado->fetch_row()) {
print_r($fila);
}
/*
Esta es una consulta a la tabla test pero empleando f1 en la cláusula WHERE.
Por tanto, mysqlnd_memcache no la interceptará. Se ejecutará
empleando el protocolo de MySQL.
*/
$mysqli->query("SELECT id FROM test WHERE f1 = 'Lady'");
while ($fila = $resultado->fetch_row()) {
print_r($fila);
}
?>
El resultado del ejemplo sería:
array( [f1] => Hello [f2] => World [f3] => ! ) array( [id] => 2 )