Только для читателей Lifeexample возможно открыть интернет-магазин на Moguta.CMS со скидкой в 15%
Memcache php
Здравствуйте, уважаемые читатели блога LifeExample, сегодня мы будем разбираться с интересным механизмом кеширования данных: 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.
1 2 3 4 5 6 7 | $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 , собственно для которого и был разработан, сей механизм кеширования данных.
Читайте также похожие статьи:
Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.