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 — локальная установка не требуется.
Все уроки этого курса
- Зачем нужно кэширование в PHP
- Redis как серверный кэш для PHP
- Memcached для кэширования сессий и объектов
- Стратегии аннулирования кэша