2013-02-15

memcached

Memcache это название php-расширения для работы с сервисом кеширования memcached. Но существует еще одно (а может и не одно) php-расширение для работы сервисом кеширования memcached с названием memcached

Итого имеется:
  • один сервис кеширования memcached
  • два php-расширения для работы с указанным выше сервисом кеширования:

Отличия между этими разширениями небольшие, вот некоторые из них:
  • memcache немного быстрее memcached (бытует мнение, что разница в пределах 10%);
  • memcache имеет много меньше возможностей по работе с сервисом кеширования чем memcached (если пройти по ссылкам выше можно в этом убедиться);
  • memcache старше memcached (начало разработки в 2004 против 2009);
  • memcached требует для работы 5.2+;
  • memcache запускается на 5.1, а в требованиях у него стоит более ранний 4.3.3+.
Установка memcached:
apt-get install memcached

Перезапускаем
/etc/init.d/memcached restart

Проверяем:
# netstat -tap | grep memcached
tcp    0   0 localhost:11211     *:*           LISTEN   13036/memcached


Компилируем и устанавливаем модуль для PHP:

apt-get install php5-dev libmemcache-dev

pecl download memcache
tar xzvf memcache-2.2.7.tgz
cd memcache-2.2.7/
phpize && ./configure --enable-memcache && make
cp modules/memcache.so /usr/lib/php5/20100525+lfs/

echo 'extension=memcache.so' >> /etc/php5/apache2/php.ini
/etc/init.d/apache2 restart

Пример:

    //Создаём новый объект. Также можно писать и в процедурном стиле
    $memcache_obj = new Memcache;

    //Соединяемся с нашим сервером
    $memcache_obj->connect('127.0.0.1', 11211) or die(«Could not connect»);

    //Попытаемся получить объект с ключом our_var
    $var_key = @$memcache_obj->get('our_var');

    if(!empty($var_key))
    {
        //Если объект закэширован, выводим его значение
        echo $var_key;
    }

    else
    {
        //Если в кэше нет объекта с ключом our_var, создадим его
        //Объект our_var будет храниться 5 секунд и не будет сжат
        $memcache_obj->set('our_var', date('G:i:s'), false, 5);

        //Выведем закэшированные данные
        echo $memcache_obj->get('our_var');
    }

    //Закрываем соединение с сервером Memcached
    $memcache_obj->close();
?>

No comments:

Post a Comment