0Pricing
PHP Academy · Урок

Memcached для кэширования сессий и объектов

Используйте Memcached как распределённое хранилище объектов PHP в памяти

«Memcached для кэширования сессий и объектов» — бесплатный урок PHP Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

Что такое Memcached?

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

Установка

Установите сервер Memcached и расширение PHP.

# Ubuntu/Debian:
$ apt install memcached php-memcached
$ service memcached start

# Verify:
$ php -m | grep memcached

Подключение к Memcached

Создайте экземпляр Memcached и добавьте один или несколько серверов.

<?php
$mc = new Memcached();
$mc->addServer("127.0.0.1", 11211);

// Multiple servers (distributed caching):
$mc->addServers([
    ["192.168.1.10", 11211],
    ["192.168.1.11", 11211],
]);

Основные операции с кэшем

Сохраняйте, получайте, удаляйте и заменяйте записи кэша.

<?php
// Set with TTL:
$mc->set("product:1", $productData, 600); // 10 min

// Get:
$product = $mc->get("product:1");
if ($mc->getResultCode() === Memcached::RES_NOTFOUND) {
    $product = fetchFromDB(1);
    $mc->set("product:1", $product, 600);
}

// Delete:
$mc->delete("product:1");

Хранение сессий с Memcached

Храните сессии PHP в Memcached для быстрого общего доступа между несколькими веб-серверами.

# php.ini:
session.save_handler = memcached
session.save_path    = "127.0.0.1:11211"

Интеграция Memcached с Laravel

Настройте Memcached и используйте его как драйвер кэша Laravel.

# .env
CACHE_DRIVER=memcached
MEMCACHED_HOST=127.0.0.1

// Usage is identical to Redis via Cache facade:
Cache::put("key", $value, 300);
$value = Cache::get("key");

Memcached и Redis

Memcached: проще, многопоточнее, работает только в оперативной памяти (без сохранения данных). Redis: более разнообразные типы данных, возможность сохранения данных (AOF/RDB), публикация и подписка, кластер. Для простого кэширования оба решения работают примерно одинаково. Для новых проектов обычно предпочитают Redis.

Распределённое кэширование

Memcached изначально распределяет ключи между несколькими серверами с помощью согласованного хеширования. Это обеспечивает горизонтальное масштабирование по мере роста трафика.

Атомарный CAS (сравнение и замена)

Memcached поддерживает операции CAS, позволяющие безопасно обновить значение только в том случае, если другой клиент не изменил его с момента последнего чтения.

<?php
$mc->get("counter", null, $cas);
$mc->cas($cas, "counter", $newValue, 60);

Ограничения TTL

Максимальный TTL в Memcached ограничен 30 днями. Значения размером более ~1 MB отклоняются. Храните небольшие значения кэша и эффективно их сериализуйте.

Мониторинг

Используйте memcached-tool 127.0.0.1:11211 stats, чтобы проверить долю попаданий, использование памяти и количество вытеснений. Низкая доля попаданий или большое количество вытеснений указывает на слишком маленький кэш.

Итоги

Memcached отлично подходит для простого распределённого кэширования объектов и сессий. В Laravel установите CACHE_DRIVER=memcached. Для рабочей среды и более широких возможностей предпочтительнее Redis.

Быстрая проверка

Каково одно ключевое различие между Memcached и Redis?

Часто задаваемые вопросы

Урок «Memcached для кэширования сессий и объектов» бесплатный?

Да — полный текст урока «Memcached для кэширования сессий и объектов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Memcached для кэширования сессий и объектов»?

Используйте Memcached как распределённое хранилище объектов PHP в памяти Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Memcached для кэширования сессий и объектов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Зачем нужно кэширование в PHP
  2. Redis как серверный кэш для PHP
  3. Memcached для кэширования сессий и объектов
  4. Стратегии аннулирования кэша
← Назад к PHP Academy