memcached
Сегодня впервые опробовал 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;
}
Вот такой вот несложный код заставит ваше интернет приложение задышать поновому :))
![["***"] ["***"]](http://farm5.staticflickr.com/4004/4440914452_f73b768952_s.jpg)
![["Energizer"] ["Energizer"]](http://farm3.staticflickr.com/2505/4440139761_e9cb46ffa5_s.jpg)
![["***"] ["***"]](http://farm3.staticflickr.com/2699/4440139367_5a1785a1ba_s.jpg)
![["Cowgirl"] ["Cowgirl"]](http://farm3.staticflickr.com/2764/4440914964_b54e5743a2_s.jpg)