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;
} 

Вот такой вот несложный код заставит ваше интернет приложение задышать поновому :))

Mon, 03 Sep 2007 07:24 Posted in

Tags ,

Comment memcached