Menu
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

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.