Après association d'une connexion MySQL avec une connexion Memcache en
utilisant la fonction mysqnd_memcache_set(), le plugin
tente de remplacer de façon transparente les requêtes SQL de type SELECT
par un accès memcache. Dans ce but, le plugin surveille toutes les requêtes
SQL exécutées et tente de faire correspondre chaque chaîne de requête
avec l'expression rationnelle MYSQLND_MEMCACHE_DEFAULT_REGEXP
.
Dans le cas d'une correspondance, le plugin mysqlnd memcache vérifie si la
requête SELECT
tente d'accéder qu'à des colonnes d'une table
mappée et la clause WHERE
se limite à une seule clé de recherche.
Dans le cas de la table SQL d'exemple, le plugin utilisera l'interface Memcache
du serveur MySQL pour récupérer les résultats pour une requête SQL comme :
SELECT f1, f2, f3 WHERE id = n
.
Exemple #1 Exemple simple
<?php
$mysqli = new mysqli("host", "user", "passwd", "database");
$memc = new Memcached();
$memc->addServer("host", 11211);
mysqlnd_memcache_set($mysqli, $memc);
/* Requête de la table test en utilisant l'ID comme clé dans la clause
WHERE et accès des champs f1, f2 et f3. Toutefois, mysqlnd_memcache
va l'intercepter et l'envoyer via memcache.
*/
$result = $mysqli->query("SELECT f1, f2, f3 FROM test WHERE id = 1");
while ($row = $result->fetch_row()) {
print_r($row);
}
/* Requête de la table test mais en utilisant f1 dans la clause WHERE.
Toutefois, mysqlnd_memcache ne peut pas l'intercepter. Elle sera exécutée
en utilisant le protocole MySQL
*/
$mysqli->query("SELECT id FROM test WHERE f1 = 'Lady'");
while ($row = $result->fetch_row()) {
print_r($row);
}
?>
L'exemple ci-dessus va afficher :
array( [f1] => Hello [f2] => World [f3] => ! ) array( [id] => 2 )