После связи соединения MySQL с соединением Memcache с использованием
mysqnd_memcache_set(), плагин будет пытаться прозрачно
подменить запросы SELECT
запросами через memcache.
С этой целью плагин отслеживает все выполняемые SQL-запросы и пытается распознать
их с помощью MYSQLND_MEMCACHE_DEFAULT_REGEXP
.
В случае, если запрос распознается, плагин mysqlnd memcache plugin проверяет,
использует ли SELECT
только столбцы сопоставленной таблицы
и условия WHERE
ограничены поиском только одного ключа.
В случае с приведённой таблицей, плагин будет использовать интерфейс Memcache
сервера MySQL для извлечения результатов для запросов типа
SELECT f1, f2, f3 WHERE id = n
.
Пример #1 Простой пример
<?php
$mysqli = new mysqli("host", "user", "passwd", "database");
$memc = new Memcached();
$memc->addServer("host", 11211);
mysqlnd_memcache_set($mysqli, $memc);
/*
Этот запрос обращается к таблице test, используя id как ключ в условии
WHERE и запрашивает поля f1, f2 и f3. Соответственно, mysqlnd_memcache
перехватит его и перенаправит в memcache.
*/
$result = $mysqli->query("SELECT f1, f2, f3 FROM test WHERE id = 1");
while ($row = $result->fetch_row()) {
print_r($row);
}
/*
Этот запрос обращается к таблице test, но в условии WHERE использует поле f1.
Соответственно, mysqlnd_memcache не будет его перехватывать. Так что
этот запрос будет выполнен как обычный SQL-запрос по протоколу MySQL
*/
$mysqli->query("SELECT id FROM test WHERE f1 = 'Lady'");
while ($row = $result->fetch_row()) {
print_r($row);
}
?>
Результат выполнения данного примера:
array( [f1] => Hello [f2] => World [f3] => ! ) array( [id] => 2 )