Если сайт на WordPress тормозит при росте трафика, узкое место часто не «медленный PHP», а повторные обращения к MySQL. Object cache в Redis снимает с базы часть однотипных запросов: опции, объекты, результаты тяжёлых выборок. Ниже: как это устроено и как подключить Redis к WordPress без лишней магии.
Что такое Redis
Redis – хранилище данных в оперативной памяти. Работает по схеме ключ-значение и умеет списки, хеши, множества и другие структуры. Для WordPress его обычно ставят как object cache: временное хранение объектов PHP, которые иначе каждый раз тянутся из базы.
Это не замена page cache (HTML на диске или CDN) и не замена MySQL. Это ускоритель повторных чтений данных внутри PHP-запросов.
WordPress и уровни кэша
WordPress хранит посты, настройки, мета-поля и комментарии в БД. На каждом хите ядро и плагины могут много раз ходить за одними и теми же данными. Page-cache плагины (WP Super Cache, W3 Total Cache и аналоги) отдают уже собранный HTML. Object cache решает другую задачу: ускоряет PHP, когда страницу всё равно нужно собрать заново – авторизованные пользователи, корзина, персональные блоки, админка.
Рабочая связка обычно такая:
- page cache / CDN для анонимных посетителей;
- Redis object cache для динамики и повторных запросов к данным;
- нормальные индексы в БД и аккуратный набор плагинов.
Почему именно Redis
- Скорость – данные в RAM, latency ниже, чем у file-based object cache на диске.
- Стойкость к нагрузке – меньше повторных SELECT к MySQL на пиках.
- Гибкость – TTL, сброс ключей, мониторинг через redis-cli.
- Масштабирование – Redis можно вынести на отдельный хост, если сайт растёт.
Как подключить Redis к WordPress
Базовый порядок на VPS или выделенном сервере:
- Установить и запустить Redis (или подключиться к managed Redis у хостера).
- Поставить плагин Redis Object Cache (или аналог с drop-in object-cache.php).
- Включить object cache в плагине и убедиться, что статус Connected / Enabled.
- Проверить, что в
wp-contentпоявился drop-inobject-cache.php.
Установка Redis (пример для Debian/Ubuntu):
sudo apt update sudo apt install redis-server sudo systemctl enable --now redis-server redis-cli ping # ожидаемый ответ: PONG
В wp-config.php параметры иногда задают явно (зависит от окружения и плагина):
define( 'WP_REDIS_HOST', '127.0.0.1' ); define( 'WP_REDIS_PORT', 6379 ); // define( 'WP_REDIS_PASSWORD', 'your-secret' ); // define( 'WP_REDIS_DATABASE', 0 );
После активации смотрите hit/miss ratio и ошибки подключения. Если Redis недоступен, WordPress обычно деградирует к запросам в БД: сайт живёт, но ускорения нет.
На что обратить внимание
- Память – Redis живёт в RAM; задайте maxmemory и политику eviction, иначе процесс упрётся в лимит.
- Безопасность – не открывайте 6379 в интернет без firewall и пароля/ACL.
- Персистентность – для object cache потеря данных при рестарте обычно терпима; RDB/AOF настраивайте по задаче.
- Инвалидация – после деплоя и массовых правок сбрасывайте кэш (плагин или
wp cache flushчерез WP-CLI). - Конфликты – редкие плагины, которые сами пишут object-cache.php, могут мешать drop-in.
Когда Redis особенно полезен
- много плагинов и опций, частые get_option / meta-запросы;
- каталоги WooCommerce, фильтры, личный кабинет;
- высокая доля залогиненных пользователей, где page cache почти не работает;
- сервер уже упирается в CPU/IO MySQL на чтении.
Если сайт почти статичный и хорошо кэшируется на уровне HTML, выигрыш от Redis будет скромнее. Замеряйте TTFB, число запросов к MySQL и нагрузку до/после на одном и том же сценарии.
Краткий итог
Redis object cache – практичный способ ускорить WordPress там, где PHP снова и снова ходит в базу за одними и теми же объектами. Ставите Redis, подключаете drop-in через плагин, закрываете порт, следите за памятью. Вместе с page cache и аккуратным набором плагинов это один из самых предсказуемых шагов по производительности.
