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

Redis jako cache dla WordPress — konfiguracja object cache

Co to jest Redis i po co go używać z WordPress?

Redis to in-memory data store działający jako baza danych klucz-wartość. W kontekście WordPress pełni rolę object cache — przechowuje w pamięci RAM wyniki zapytań do bazy danych, opcje WordPressa (wp_options) oraz inne drogie obliczenia, eliminując powtarzające się zapytania SQL.

Standardowy WordPress bez zewnętrznego object cache używa cache nietrwałego (w pamięci PHP procesu), który jest kasowany po każdym żądaniu. Redis pozwala na cache trwały między żądaniami — jeden użytkownik "rozgrzewa" cache, kolejni korzystają z gotowych danych.

Powiązane tematy: PHP OPcache, konfiguracja Nginx vhost, WordPress security hardening oraz WordPress Multisite. Do porównania hostingów obsługujących Redis sprawdź kalkulator kosztów.

Wymagania — kiedy Redis ma sens?

  • VPS lub serwer dedykowany — hosting współdzielony rzadko oferuje Redis
  • PHP 7.4+ z rozszerzeniem phpredis lub predis
  • RAM: minimum 128 MB dla Redis — dla małych stron wystarczy 64 MB; dla WooCommerce 256 MB+
  • Witryny z WooCommerce, BuddyPress lub dużą liczbą wtyczek zyskują najwięcej
  • Statyczne witryny z małym ruchem — zysk minimalny, prościej użyć cache stron (WP Super Cache)

Instalacja Redis na serwerze (Ubuntu/Debian)

sudo apt update
sudo apt install redis-server

# Sprawdź status
sudo systemctl status redis-server

# Test połączenia
redis-cli ping
# Oczekiwany wynik: PONG

Konfiguracja maxmemory (/etc/redis/redis.conf)

# Ustaw maksymalny rozmiar pamięci
maxmemory 256mb

# Polityka eksmisji — usuń najrzadziej używane klucze gdy brak pamięci
maxmemory-policy allkeys-lru

# Bind tylko na localhost (bezpieczeństwo — nie wystawiaj Redis publicznie)
bind 127.0.0.1

# Wymagaj hasła (opcjonalnie, ale zalecane)
requirepass twoje_silne_haslo
sudo systemctl restart redis-server

Instalacja rozszerzenia PHP Redis

# Dla PHP 8.x (dostosuj wersję)
sudo apt install php8.2-redis

# Lub przez PECL
sudo pecl install redis

# Sprawdź czy rozszerzenie jest załadowane
php -m | grep redis

Konfiguracja WordPress — 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_PASSWORD', 'twoje_silne_haslo' ); // jeśli ustawiłeś requirepass
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_REDIS_TIMEOUT', 1 );
define( 'WP_REDIS_READ_TIMEOUT', 1 );

// Prefix — ważne przy wielu instancjach WP na tym samym Redis
define( 'WP_REDIS_PREFIX', 'moja_strona:' );

// Opcjonalnie — wyłącz grupy które NIE powinny być cache'owane
define( 'WP_REDIS_IGNORED_GROUPS', [ 'counts', 'plugins' ] );

Instalacja wtyczki Redis Object Cache

Oficjalna wtyczka Redis Object Cache (autor: Till Krüss, 1M+ instalacji aktywnych) dostarcza plik object-cache.php do katalogu wp-content/.

# Przez WP-CLI
wp plugin install redis-cache --activate

# Aktywuj object cache
wp redis enable

# Sprawdź status
wp redis status

W panelu WordPress pojawi się widget Redis Object Cache na stronie głównej dashboard z informacją o połączeniu.

Weryfikacja — czy Redis działa?

# Monitoruj live ruch Redis
redis-cli monitor

# Sprawdź statystyki
redis-cli info stats | grep -E 'keyspace_hits|keyspace_misses|instantaneous_ops_per_sec'

# Sprawdź zajętą pamięć
redis-cli info memory | grep used_memory_human

Dobre wyniki: hit rate > 80% oznacza skuteczny cache. Niska trafność (poniżej 50%) może sugerować zbyt agresywną eksmisję lub nieodpowiednią konfigurację.

Sprawdź przez WP-CLI

wp redis status
# Oczekiwane wyjście:
# Status: Connected
# Client: PhpRedis 6.x
# Hits: 1234 (89.5%)
# Misses: 145 (10.5%)

WooCommerce — specjalne uwagi

WooCommerce generuje wiele transient options i cache sesji klientów. Zalecana konfiguracja:

// Nie cache'uj sesji WooCommerce w Redis (już w DB)
define( 'WP_REDIS_IGNORED_GROUPS', [
    'counts',
    'wc_session_id',
    'woocommerce_transients',
] );

// Wydłuż timeout dla sklepów z dużym katalogiem
define( 'WP_REDIS_TIMEOUT', 2 );
define( 'WP_REDIS_READ_TIMEOUT', 2 );

Dla WooCommerce z 1000+ produktów przydziel minimum 512 MB pamięci Redis i monitoruj eviction rate — zbyt częste eksmisje kluczy negują korzyści cache.

Typowe problemy i rozwiązania

Problem Przyczyna Rozwiązanie
Connection refused Redis nie nasłuchuje / zły port redis-cli ping, sprawdź bind w redis.conf
NOAUTH Authentication required Brak WP_REDIS_PASSWORD Dodaj stałą do wp-config.php
Hit rate < 30% Za mało pamięci — agresywna eksmisja Zwiększ maxmemory lub zmień policy na volatile-lru
Stale content po aktualizacji Cache nie jest inwalidowany wp redis flush lub redis-cli FLUSHDB
PHP Fatal: Class 'Redis' not found Brak rozszerzenia phpredis Zainstaluj php-redis lub użyj predis (czysty PHP)

Redis vs alternatywy

Rozwiązanie Typ cache Wymaga VPS? Zastosowanie
Redis Object Cache Object cache (baza, opcje) Tak WooCommerce, portale
Memcached Object cache Tak Prostsze instalacje
WP Super Cache / W3TC Cache stron (HTML) Nie Blogi, statyczne treści
LiteSpeed Cache Full-page + object Nie (wymaga LiteSpeed) Hosting z LiteSpeed
PHP OPcache Cache bytecode PHP Nie Zawsze włącz — podstawa

Optymalna konfiguracja: OPcache + Redis + cache stron (trzy warstwy) — każda eliminuje inny rodzaj opóźnienia.