PHP

Memcache php



Здравствуйте, уважаемые читатели, сегодня мы будем разбираться с интересным механизмом кеширования данных: Memcache php. Замечательная сторона memcahe состоит в том, что мы можем кешировать все что угодно, от SQL запросов, до объектов и любых других структур данных.

Что такое Memcache

Memcache – это непросто технология или алгоритм кеширования, в первую очередь это серверная программа, запущенная на веб-сервере. Если вы пользуетесь услугами хостинга, то перед использованием мемкеша в приложении, необходимо убедиться, что memcahe доступен. Сделать это можно с помощью функции phpinfo().



Концепция

Убедившись в том, что memcahe сервер доступен для использования, давайте познакомимся с концепцией сего механизма кеширования. Самое привлекательное в использовании memcahe php это то, что все закешированные данные хранятся в оперативной памяти сервера. Такой принцип хранения данных, не только экономит процессорное время на формировании их вновь и вновь, но и очень увеличивает скорость доступа к ним.

В упрощенном варианте концепцию работы memcahe можно изложить таким образом: часто используемые php объекты кешируются и сохраняются в ОЗУ сервера в виде набора пар "ключ – объект", при необходимости сохраненные раннее объекты берутся из памяти сервера минуя многочисленные подключения к БД проверки и циклы. В случае когда алгоритм memcahe php не обнаруживает запрашиваемого объекта в памяти, необходимый объект создается обычным образом и сохраняется в кеш.

Как работать с сервером Memcache в PHP

Для работы с серевром Memcache нам потребуется одна из PHP библиотек php-memcache либо php-memcached.

Выбор той или иной библиотеки зависит от индивидуальных потребностей разработчика, в большей своей части, они очень похожи друг на друга, с той разницей, что php-memcached предоставляет несколько большие возможности для работы такие как:

CAS токены для версионирования ключей
Обратные вызовы (callbacks)
Метод getDelayed() позволяющий уменьшить время ожидания, откладывая фактическое чтение ключей
Поддержка бинарного протокола
Возможность избежать сериализации используя igbinary
Оба модуля php-memcach и php-memcached, не являются стандартными для php, но доступны в репозитории PECL.

В случае работы не на собственном сервере, а на сервере хостинга, выбирать вам не придется, все будет уже настроено.

Пример работы

Сразу обращу ваше внимание на то, что данный пример будет работать на php-memcach и php-memcached одинаково.

Memcach php использует следующие методы для работы с данными:

get – для получения объекта из кэша;
set – запись объекта по ключу в кэш;
add – запись объекта в кэш, если в нем еще нет такого ключа;
replace – запись объекта в кэш, в случае, если ключ уже есть.
Приведу примитивный пример использования кеширования с помощью сервера memcache.
$memcache = new Memcache();
$memcache->pconnect('localhost', 3211); //Cоединяемся. По умолчанию можно использовать любой порт
$key = 'key_1';
$value = array(1,2,3,4,5);
$expire = 600;
$memcache->set($key, $value, 0, $expire); // Сохраняем значение на 10 минут 
$memcache->get('key_1'); // получаем записанный ранее массив

При использовании сервера мемкеша сразу для нескольких проектов, помните, что данные записываются в одну оперативную память. Это значит, что если вы с разных проектов запишите новые значения по одному и тому же ключу, то для обоих будет доступно последнее значение, попавшее в память.

Memcache php поможет значительно снизить нагрузку web-приложения. Примером этого является известный всем сервис livejournal.com , собственно для которого и был разработан, сей механизм кеширования данных.
Теги:
Memcache
Добавлено: 23 Сентября 2013 02:14:43 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...