Сегодня впервые опробовал memcached (”мемкешди” в русской транскрипции). Эффект офигенный. Я разрабатывал онлайн просмотрщик биржевых торгов, который просто обновлял HTML страницу с выбранными инструментами с определенной периодичностью. Основная засада была в том что минимальный период - 3 секунды, а таких пользователей сейчас может быть до сотни. Таким образом получаем 300 запросов в три секунды, т.е. где-то 100 запросов к базе в секунду. А запрос довольно немаленький на самом деле.
Решилось все очень просто - кешированием запросов которые выполняются с периодичностью в 15 секунд и более. Изменения в коде - минимальные. Пришлось запросы к базе делать через маленький метод такого рода:
function getCachedQuery($query, $ttl=30) {
global $_memcache, $db; //$db здесь - объект PEAR::MDB2
if(!isset($_memcache)) {
$_memcache = new Memcache;
$_memcache->connect('localhost', 11211) or die ("Could not connect");
}
$md5_q_txt = md5($query);
if($_memcache->get($md5_q_txt)) {
$q = $_memcache->get($md5_q_txt);
}
else {
$q = $db->queryAll($query, '', MDB2_FETCHMODE_ASSOC);
$_memcache->add($md5_q_txt, $q, false, $ttl);
}
Return $q;
}
Вот такой вот несложный код заставит ваше интернет приложение задышать поновому :))