Memcache — расширение для php, предоставляющее удобный процедурный и объектно-ориентированный интерфейс к memcached. В свою очередь Memcached — это программное обеспечение, реализующее сервис кэширования данных в оперативной памяти.
Официальный сайт - http://memcached.org

Прежде всего проверяем не установлено ли данное php-расширение. Для этого можно выполнить строку кода
echo phpinfo();
Если блок с названием memcache отсутствует, значит нужно устанавливать.


Установка memcache под Windows в качестве php-расширения.
Для скачивания открываем ссылку.
Там нужно выбрать версию файла согласно своего окружения:
  • vc14 & vc15
  • x86 & x64
  • ts & nts
Это опять же можно сделать на основании информации выведенной на экран командой:
phpinfo();

Первый параметр смотрим в графе Compiler.
Второй в графе Architecture.
Третий в графе PHP Extension Build.

Скачиваем нужный dll файл, например из папки vc14/x86/ts.
Переименовываем файл в php_memcache.dll и перемещаем в папку ext что в каталоге с вашей версией php.

Так же скачать memcache можно этой ссылке.

Далее включаем php_memcache в php.ini, добавив строку:
extension=php_memcache.dll
Перезагружаем сервер.
Проверяем появился ли раздел «memcache» в выводе функции phpinfo();



Сервер memcached.
Скачиваем сервер memcached.
Для linux по ссылке, там архив с примером установки.

Для Win например от сюда.
Если используется OpenServer, то там он уже присутствует в папке OpenServer\modules\memcached. Выбираем папку с более новой версией и кликаем по файлу memcached.exe для запуска. При этом появится окошко которое должно быть открыто пока сервер memcached запущен.
Так же можно запустить из командной строки. Для этого в командной строке переходим к папке с файлом:
d:
cd D:\OpenServer 5.2.7\modules\memcached\Memcached-1.4-x64
и запускаем вводом названия exe файла:
memcached

Список всех доступных команд:
memcached -h

В настройках OpenServerа указывается порт, который будет использовать memcached:



Оставляем без изменений. А на закладке «Разное» указывается объем памяти который выделен для memcached.
После этого уже можно кэшировать.


Примеры использования.
Стандартный пример использования memcache:
$memcache = memcache_connect('localhost', 11211);

if ($memcache) {
    $memcache->set("str_key", "String to store in memcached");
    $memcache->set("num_key", 123);

    $object = new StdClass;
    $object->attribute = 'test';
    $memcache->set("obj_key", $object);

    $array = Array('assoc'=>123, 345, 567);
    $memcache->set("arr_key", $array);

    var_dump($memcache->get('str_key'));
    var_dump($memcache->get('num_key'));
    var_dump($memcache->get('obj_key'));
}
else {
    echo "Connection to memcached failed";
}

В данном примере примеры кэширования строк, чисел, объектов и массивов.
Первой строкой создается соединение. Далее два основных метода для работы – set для записи данных, get для чтения.

Memcache::Set http://php.net/manual/ru/memcache.set.php

bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )
Memcache::set() записывает элемент со значением var на сервере memcache с указанным ключем key.

  • key
Ключ, с которым будет ассоциировано значение элемента.
  • var
Переменная для сохранения. Строковые и числовые значения сохраняются как есть, а остальные типы сериализируются.
  • flag
Используйте MEMCACHE_COMPRESSED для сохранения элементов с использованием сжатия (используется zlib).
expire
Время жизни элемента. Если равно нулю, элемент никогда не устаревает. Так же вы можете использовать Unix timestamp или число секунд начиная с текущего момента, однако, число секунд не может быть больше 2592000 (30 дней).

При указании MEMCACHE_COMPRESSED для поддержки сжатия "на лету", нужно проверить включен ли zlib в php.ini:
zlib.output_compression = On

Другой способ создания подключения с сервером memcache и использованием метода set:
$memcache_obj = new Memcache();

/* подключение к memcached серверу */
$memcache_obj->connect('localhost', 11211);

/* Установить значение элемента с ключем 'var_key' использую сжатие "на лету" и
временм жизни 50 секунд. */
$memcache_obj->set('var_key', 'some really big variable', MEMCACHE_COMPRESSED, 50);

echo $memcache_obj->get('var_key');


Memcache::get http://php.net/manual/ru/memcache.get.php

Memcache::get ( string $key [, int &$flags ] )
Memcache::get() возвращает ранее сохраненный элемент с ключем key если он в данный момент существует на сервере.

  • key - Ключ или массив ключей для чтения.
  • flags - Если задан, в него будет прочитано значение флагов. Это те же флаги, что и переданные, например в Memcache::set().

Остальные методы и базовое использование тут.