Установка MEMCACHED

Здравствуй, дорогой посетитель. Данная статья об установке системы кэширования memcached, которая пригодится владельцам виртуальных выделенных серверов (VDS).

Да будет кэш!

В наши дни кэш или кэширование встречается повсеместно в электронных устройствах, архитектурах ПО: процессорные кэши разных уровней, оперативная память, буферы жестких дисков и операционных систем и т.д… вплоть до буферизации в автомагнитоле.

Почему же кэшу сопутствует такой успех? Здесь все дело в локальном принципе: ПО устройства свойственно работать с данными из одной области. В случае оперативной памяти, если программа работает с данными по адресу 51, то, вероятнее всего, следующий запрос будет по адресу 52, 53 и т.д., а не 178. В случае с жестким диском, его буфер заполняется данными из соседних секторов по отношению с данными, использующимися в данный момент.

Относительно Web-­проектов успех кэширования заключается в том, что на сайте всегда есть более популярные страницы, некоторые данные используются не только на одной странице­, то есть существуют данные, которые используются гораздо чаще и являются более востребованными, чем остальные. И когда мы заменяем несколько обращений к бэкенду на одно обращение в кэш, затем все последующие обращения будут отдаваться с кэша.

Memcached представляет собой огромную хэш­-таблицу в оперативной  памяти, доступную по сетевому протоколу. Он обеспечивает сервис по хранению значений, ассоциированных с ключами. Доступ к хэшу мы получаем через простой сетевой протокол, клиентом может выступать программа, написанная на произвольном языке программирования (существуют клиенты для C/C++, PHP, Perl, Java и т.п.)

1

По сути, можно сказать, что время отклика сервера memcached определяется только сетевыми издержками и практически равно времени передачи пакета от frontend’а до сервера memcached (RTT). Такие характеристики позволяют использовать memcached в высоконагруженных web-­проектах для решения различных задач, в том числе и для кэширования данных.

Установка

На нашем сервере установлена ОС Debian 7 x86_64 GNU/Linux

Заходим на сервер из под root пользователя.

Для начала обновим репозитории:

apt­get update && apt­get upgrade

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

apt­get install memcached php5­memcache

Далее, проверяем запустился ли демон:

netstat ­tap | grep memcached

Получаем:

tcp 0 0 localhost:11211 *:* LISTEN 21488/memcached

По умолчанию memcache слушает порт 11211. Если вам нужен другой порт, отредактируйте конфигурационный файл /etc/memcached.conf. Он идет с довольно подробными комментариями.

2

Основные из них:

  • ­ ­m 512 ( по умолчанию 64) –  ­ параметр указывает сколько памяти выделить для кеширования в мегабайтах;
  • ­ ­p 11211 –  ­ порт, который слушает наш демон;
  • ­ ­l 127.0.0.1 ­ – этот параметр отвечает за IP адрес, который слушает демон memcached; ­ ­
  • u nobody ­ от какого пользователя запускать (здесь не рут для безопастности);
  • ­ logfile /var/log/memcached.log ­ куда будет складываться лог;
  • ­ ­c 1024 ­ максимальный лимит запросов. ­

Чтобы изменения вступили в силу, перезагружаем Apache:

/etc/init.d/apache2 restart

Для проверки работоспособности создадим в корне нашего сайта файл: memcachetest.php с содержанием:

<?php

$memcache = new Memcache;

$memcache­>connect﴾'localhost', 11211﴿ or die ﴾"Could not connect"﴿;

$version = $memcache­>getVersion﴾﴿;

echo "Server's version: ".$version."<br/>\n";

$tmp_object = new stdClass;

$tmp_object­>str_attr = 'test';

$tmp_object­>int_attr = 123;

$memcache­>set﴾'key', $tmp_object, false, 10﴿ or die ﴾"Failed to

save data at the server"﴿;

echo "Store data in the cache ﴾data will expire in 10

seconds﴿<br/>\n";

$get_result = $memcache­>get﴾'key'﴿;

echo "Data from the cache:<br/>\n";

var_dump﴾$get_result﴿;

?>

Переходим по адресу ваш_домен\memcachetest.php. Если видим:

Server's version: 1.4.13

Store data in the cache (data will expire in 10 seconds)

Data from the cache:

object(stdClass)#3 (2) { ["str_attr"]=> string(4) "test" ["int_attr"]=> int(123) } В©

то все хорошо. Memcache установлен и работает.

Также для просмотра данных о нашем демоне пригодится файлик info.php с содержанием:

<?php

phpinfo();

?>

Открываем его по адресу ваш_домен\info.php.