Memcached
Memcached — это распределённое in-memory хранилище данных формата «ключ — значение», заточенное под одну задачу: максимально быстро кешировать объекты в оперативной памяти.
Что даёт
В отличие от Redis, Memcached принципиально прост. У него нет развитых типов данных, встроенных механизмов репликации или сохранения состояния на диск (персистентности). Если сервер перезагрузится, всё содержимое оперативной памяти полностью стёрется.
Простота — его главное преимущество. Memcached использует многопоточную архитектуру (multithreading) и распределяет память через собственную систему Slab Allocator, которая защищает от фрагментации RAM. Там, где Redis упирается в одно ядро процессора, Memcached легко утилизирует все выделенные ядра CPU на многоядерном сервере, отдавая и записывая простые строки, готовый HTML или сериализованные объекты из базы.
Плюсы на практике:
- Предельная скорость. Минимальные накладные расходы на протокол и работу с памятью дают наносекундные задержки при чтении.
- Честная многопоточность. Отлично масштабируется вверх (scale-up) на мощных многоядерных нодах за счёт распределения хэш-таблицы по потокам.
- Простой старт. Минимальный набор конфигов — задали объем RAM, порт, количество потоков, и сервис готов к работе.
- Управление памятью. При заполнении выделенной RAM Memcached автоматически вытесняет самые старые или редко используемые данные по алгоритму LRU (Least Recently Used).
Как использовать
Memcached ставят ровно туда, где нужно разгрузить баз данных от частых однотипных read-запросов и не требуется хранить ничего ценного.
- Кеширование тяжёлых SQL-запросов. Результаты выборок (например, каталог товаров, список категорий или настройки сайта) сериализуются в строку и уходят в Memcached по ключу md5(sql_query). При повторном запросе приложение сначала ищет ключ в кеше, экономя ресурсоемкий выбор из MySQL или PostgreSQL.
- Сессии и временные токены. Если потеря сессии при падении сервера не критична (пользователя просто попросит переавторизоваться), Memcached идеально подходит на роль быстрого сессионного хранилища.
- Кеширование фрагментов верстки. В CMS (Bitrix, WordPress) и веб-фреймворках сервисом закрывают кеширование отдельных блоков страниц — шапок, футеров, виджетов.