Redis и WordPress: object cache для ускорения сайта

Если сайт на 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 или выделенном сервере:

  1. Установить и запустить Redis (или подключиться к managed Redis у хостера).
  2. Поставить плагин Redis Object Cache (или аналог с drop-in object-cache.php).
  3. Включить object cache в плагине и убедиться, что статус Connected / Enabled.
  4. Проверить, что в wp-content появился drop-in object-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 и аккуратным набором плагинов это один из самых предсказуемых шагов по производительности.

Источники и ссылки


Комментарии загружаются…