Содержание

Memcache

Memcached — программное обеспечение, реализующее сервис кэширования данных в оперативной памяти, тем самым, ускоряет работу приложения и снижает нагрузку на сервер.

Memcache - это демон кэширования, разработанный специально для динамические веб-приложения для уменьшения загрузки базы данных сохранение объектов в памяти.

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

Пример правильно настроенного Memcache

Используйте скрипты из моей статьи, чтобы разобраться работает у вас кеширование Memcache или нет. Чтобы получить такой результат, как на скриншоте по на нагрузке на Mysql, мне потребовалось почти полтора месяца биться головой о стену.

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

Как проверить, установлен ли memcache или memcached для PHP?

  1. По умолчанию memcached слушает порт 11211 с IP:127.0.0.1 (localhost):
    # netstat -tap | grep memcached
    tcp 0 0 localhost:11211 *:* LISTEN 21488/memcached
  2. Вы можете посмотреть вывод функции Использование расширенного phpinfo vs PhpSysInfo или проверить, доступна ли какая-либо из функций memcache.
  3. Код проверит, включено ли расширение memcache, и также работает ли демон и может ли он хранить и извлекать данные успешно
    <?php
    if (class_exists('Memcache')) {
        $server = 'localhost';
        if (!empty($_REQUEST['server'])) {
            $server = $_REQUEST['server'];
        }
        $memcache = new Memcache;
        $isMemcacheAvailable = @$memcache->connect($server);
     
        if ($isMemcacheAvailable) {
            $aData = $memcache->get('data');
            echo '<pre>';
            if ($aData) {
                echo '<h2>Data from Cache:</h2>';
                print_r($aData);
            } else {
                $aData = array(
                    'me' => 'you',
                    'us' => 'them',
                );
                echo '<h2>Fresh Data:</h2>';
                print_r($aData);
                $memcache->set('data', $aData, 0, 300);
            }
            $aData = $memcache->get('data');
            if ($aData) {
                echo '<h3>Memcache seem to be working fine!</h3>';
            } else {
                echo '<h3>Memcache DOES NOT seem to be working!</h3>';
            }
            echo '</pre>';
        }
    }
    if (!$isMemcacheAvailable) {
        echo 'Memcache not available';
    }
     
    ?>

Установка в Ubuntu и поддержка для PHP:

apt install memcached
apt install php8.1-memcache php8.1-memcached

Скрипт проверяет установку memcache или memcached для хостера Timeweb

Обычно сервис memcache доступен по умолчанию на всех серверах виртуального хостинга. Для подключения используйте следующие параметры: сервер: localhost (127.0.0.1); порт: 11211.

Скрипт при первом запуске, создает тестовый ключ. Следует обновить страницу и убедится что ключ создан и работает.

<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
$mem = new memcached();
$mem->addServer("127.0.0.1",11211);
$result = $mem->get("Test");
if ($result) {
echo $result;
} else {
echo "Тестовый ключ не найден, добавляю... Обновите страницу.";
$mem->set("Test", "Ключ найден, memcached работает") or die("Не получилось...");
}
?>

Просмотр статистики memcached

Для просмотр статистики memcached используются скрипты, входящие в поставку демона

/usr/share/memcached/scripts/memcached-tool 127.0.0.1 stats

Просмотр использования памяти Memcached

/usr/share/memcached/scripts/memcached-tool 127.0.0.1 display

Просмотр содержимого кеша

/usr/share/memcached/scripts/memcached-tool 127.0.0.1 dump | less

Читайте также: Что такое PHP хостинг?, W3 Total Cache позволяет подключить memcached к Wordpress, Установка, настройка, оптимизация хранилища Redis.