WordPress Redis Object Cache — konfiguracja krok po kroku
Co to jest Redis Object Cache w WordPress?
WordPress domyślnie oblicza wynik każdego zapytania do bazy danych od zera przy każdym ładowaniu strony. Redis Object Cache zapisuje wyniki tych zapytań w pamięci RAM — następne odwiedziny serwują gotowe dane bez dotkania bazy. Efekt: TTFB spada z 200–400 ms do 20–50 ms na typowej instalacji z WooCommerce lub dużą liczbą wtyczek.
Redis działa jako trwały magazyn klucz–wartość w RAM. W kontekście WordPressa zastępuje
wbudowany transient cache (który zapisuje do bazy danych tabeli wp_options) i
eliminuje zbędne SELECT powtarzane przy każdym żądaniu HTTP.
Wymagania: VPS lub hosting z Redis
Redis Object Cache wymaga serwera Redis dostępnego dla PHP. Opcje:
- VPS (najlepsza opcja) — instalujesz Redis lokalnie (
apt install redis-server), łączysz przez socket Unix lub localhost:6379. - Hosting współdzielony z Redis — niektórzy dostawcy (np. Zenbox, SmartHost w wyższych planach) udostępniają Redis w ramach pakietu. Sprawdź panel hostingu.
- Redis zdalny (Redis Cloud, Upstash) — rozwiązanie na hosting bez Redis, ale z dodatkowym opóźnieniem sieci (~5–15 ms latency).
Instalacja Redis na VPS (Ubuntu/Debian)
sudo apt update
sudo apt install redis-server
# Sprawdź czy działa
redis-cli ping
# Odpowiedź: PONG
# Włącz autostart
sudo systemctl enable redis-server
Domyślna konfiguracja (/etc/redis/redis.conf) nasłuchuje na
127.0.0.1:6379 — wystarczy dla lokalnego WordPress. Dla bezpieczeństwa Redis NIE
powinien być dostępny z zewnątrz.
Limit pamięci Redis (ważne!)
Ustaw maksymalną pamięć żeby Redis nie zjadł całego RAM-u:
# /etc/redis/redis.conf
maxmemory 256mb
maxmemory-policy allkeys-lru allkeys-lru usuwa najrzadziej używane klucze gdy pamięć się kończy — idealne dla
cache. Restart: sudo systemctl restart redis-server.
Wtyczka: Redis Object Cache
Zainstaluj wtyczkę Redis Object Cache (autorzy: Till Krüss, ponad 200k aktywnych instalacji). W panelu WordPress: Wtyczki → Dodaj nową → szukaj "Redis Object Cache" → Zainstaluj → Aktywuj.
Konfiguracja wp-config.php
Dodaj przed linią /* That's all, stop editing! */:
// Redis Object Cache
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);
define('WP_REDIS_DATABASE', 0);
// Opcjonalnie: osobna baza dla każdej instalacji WP
// define('WP_REDIS_DATABASE', 1); // dla drugiej instalacji Alternatywnie: socket Unix (szybszy)
define('WP_REDIS_SCHEME', 'unix');
define('WP_REDIS_PATH', '/var/run/redis/redis-server.sock'); Socket Unix pomija stos TCP — latency spada o ~0.1 ms. Warto na VPS gdzie WordPress i Redis są na tej samej maszynie.
Włączenie i weryfikacja
W panelu WordPress przejdź do Ustawienia → Redis. Kliknij „Enable Object Cache". Status powinien zmienić się na Connected z zielonym wskaźnikiem.
Sprawdzenie hit ratio przez WP-CLI
wp cache stats
Oczekiwany wynik po kilku minutach ruchu: hit_rate: 70–95%. Jeśli poniżej 50% —
sprawdź czy wtyczki nie omijają cache (wp_cache_bypass).
Weryfikacja przez redis-cli
redis-cli info stats | grep -E 'hits|misses|evicted'
# keyspace_hits: 15234
# keyspace_misses: 892
# evicted_keys: 0 Najczęstsze problemy
- Status: Not Connected — sprawdź czy Redis działa (
systemctl status redis-server) i czy PHP ma rozszerzenie phpredis (php -m | grep redis). Zainstaluj:sudo apt install php-redis. - Błąd WRONGTYPE — kolizja kluczy między instalacjami WP. Rozwiąż przez ustawienie
unikalnego prefiksu:
define('WP_REDIS_PREFIX', 'blog1_'); - Cache nie działa dla zalogowanych — to normalne. Redis Object Cache pomija zalogowanych użytkowników (ich sesje są unikalne). Dla nich używaj page cache (np. Nginx FastCGI cache).
Redis Object Cache vs Page Cache — różnica
Object Cache (Redis) cachuje wyniki zapytań DB i wywołań API PHP — działa dla każdego żądania, włącznie z zalogowanymi. Page Cache (WP Super Cache, W3 Total Cache, Nginx) cachuje gotowy HTML — szybszy dla anonimowych, bezużyteczny dla zalogowanych. Oba mechanizmy się uzupełniają — stosuj oba.