Поиск…


замечания

Монтаж

Вы можете установить memcache с помощью pecl

pecl install memcache

Кэширование с использованием memcache

Memcache - это система кэширования распределенных объектов и использует key-value для хранения небольших данных. Прежде чем вы начнете вызывать код Memcache на PHP, вам нужно убедиться, что он установлен. Это можно сделать с class_exists метода class_exists в php. После проверки того, что модуль установлен, вы начинаете с подключения к экземпляру сервера memcache.

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->connect('localhost',11211);
}else {
  print "Not connected to cache server";
}

Это подтвердит, что Php-драйверы Memcache установлены и подключаются к экземпляру сервера memcache, запущенному на localhost.

Memcache работает как демон и называется memcached

В приведенном выше примере мы подключались только к одному экземпляру, но вы также можете подключаться к нескольким серверам, используя

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->addServer('192.168.0.100',11211);
  $cache->addServer('192.168.0.101',11211);
}

Обратите внимание, что в этом случае, в отличие от connect, не будет никакого активного соединения, пока вы не попытаетесь сохранить или получить значение.

При кэшировании необходимо выполнить три важные операции

  1. Сохранение данных: добавление новых данных на сервер memcached
  2. Получение данных: выборка данных с сервера memcached
  3. Удаление данных: удаление уже существующих данных с сервера memcached

Хранить данные

$cache или memcached class object имеет метод set который принимает ключ, значение и время, чтобы сохранить значение для (ttl).

$cache->set($key, $value, 0, $ttl);

Здесь $ ttl или время для жизни - это время в секундах, которое вы хотите, чтобы memcache хранил пару на сервере.

Получить данные

$cache или memcached класс имеет метод get который принимает ключ и возвращает соответствующее значение.

$value = $cache->get($key);

В случае, если для ключа нет значения, оно вернет значение null

Удалить данные

Иногда вам может понадобиться удалить некоторое значение кеша. $cache или memcache имеет метод delete который можно использовать для него.

$cache->delete($key);

Малый сценарий кэширования

Давайте предположим простой блог. Он будет иметь несколько сообщений на целевой странице, которые получаются из базы данных при каждой загрузке страницы. Чтобы уменьшить sql-запросы, мы можем использовать memcached для кэширования сообщений. Вот очень маленькая реализация

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->connect('localhost',11211);
    if(($data = $cache->get('posts')) != null) {
      // Cache hit
      // Render from cache
    } else {
      // Cache miss
      // Query database and save results to database
      // Assuming $posts is array of posts retrieved from database
      $cache->set('posts', $posts,0,$ttl);
    }
}else {
  die("Error while connecting to cache server");
}

Кэш с использованием кэша APC

Альтернативный кэш PHP (APC) - это бесплатный и открытый кеш-код для PHP. Его цель - предоставить бесплатную, открытую и надежную структуру для кэширования и оптимизации промежуточного кода PHP.

монтаж

sudo apt-get install php-apc
sudo /etc/init.d/apache2 restart

Добавить кеш:

apc_add ($key, $value , $ttl);
$key = unique cache key
$value = cache value
$ttl = Time To Live;

Удалить кеш:

apc_delete($key);

Пример установки кеша:

if (apc_exists($key)) {
    echo "Key exists: ";
    echo apc_fetch($key);
} else {
    echo "Key does not exist";
    apc_add ($key, $value , $ttl);
}

Производительность :

APC почти в 5 раз быстрее Memcached.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow