Redis to baza danych działająca w pamięci operacyjnej RAM serwera, używana w WordPress jako warstwa cache obiektów. Przechowuje wyniki zapytań do bazy danych tak, żeby WordPress mógł je odczytać ponownie bez kolejnego odpytywania MySQL.
Co to jest cache obiektów
WordPress wykonuje zapytania do bazy danych MySQL przy każdym załadowaniu strony — pobiera opcje witryny, dane wpisów, informacje o użytkowniku i wiele innych. Wiele z tych zapytań powtarza się przy każdym żądaniu, nawet jeśli dane się nie zmieniły.
Cache obiektów (object cache) to warstwa pośrednia: wyniki zapytań są zapamiętywane, a przy kolejnym zapytaniu o te same dane WordPress sięga do cache, a nie do MySQL.
Domyślny cache obiektów WordPressa działa tylko podczas jednego żądania HTTP — dane znikają po zakończeniu generowania strony. Redis udostępnia trwały cache (persistent object cache), który zachowuje dane między kolejnymi żądaniami.
Jak Redis różni się od page cache
To dwa różne mechanizmy, często mylone.
Page cache zapisuje gotowy wynik strony jako plik HTML. Kolejne odwiedziny tej samej strony przez niezalogowanego użytkownika serwują ten plik — PHP i baza danych w ogóle nie są uruchamiane.
Redis (object cache) nie pomija PHP ani bazy danych całkowicie. Działa głębiej — przyspiesza samo generowanie strony przez PHP, redukując liczbę zapytań SQL. Jest szczególnie użyteczny dla zalogowanych użytkowników i stron dynamicznych, które page cache zwykle pomija (koszyk WooCommerce, panel admina, strony konta użytkownika).
Kiedy Redis przynosi zauważalny efekt
Redis ma większy sens na stronach z dużą liczbą zapytań do bazy danych, które często się powtarzają. Są to m.in.:
- sklepy WooCommerce z wieloma aktywnymi sesjami użytkowników
- strony z dużą liczbą zalogowanych użytkowników (serwisy członkowskie, kursy online)
- witryny z rozbudowaną konfiguracją widoczną przy każdym zapytaniu (wiele opcji w wp_options)
Na prostej witrynie statycznej z dobrym page cache — efekt wdrożenia Redis może być słabiej zauważalny, szczególnie dla niezalogowanych odwiedzających.
Jak wdrożyć Redis w WordPress
Do działania Redis potrzebne są trzy elementy:
-
Usługa Redis na serwerze — hosting musi udostępniać Redis. Na hostingach współdzielonych Redis często nie jest dostępny. Bardziej prawdopodobny na VPS lub zarządzanych hostingach premium.
-
Warstwa PHP do komunikacji z Redis — najczęściej rozszerzenie
phpredis; w części konfiguracji możliwy jest też klientpredis, czyli biblioteka PHP instalowana w projekcie. -
Wtyczka integracyjna — np. Redis Object Cache — instaluje plik
object-cache.phpw kataloguwp-content/, który zastępuje domyślny cache obiektów WordPress integracją z Redis.
Instalacja wtyczki bez dostępu do usługi Redis na serwerze nie przyniesie efektu — wtyczka zgłosi błąd połączenia.
Redis a Transients API
Transients API to wbudowany mechanizm WordPressa do tymczasowego przechowywania danych z określonym czasem wygaśnięcia. Bez Redis, transienty lądują w tabeli wp_options w bazie danych.
Gdy Redis jest aktywny, WordPress automatycznie kieruje transienty do pamięci RAM zamiast bazy danych — bez żadnych zmian w kodzie. To jeden z dodatkowych efektów wdrożenia Redis.
Ryzyka i ograniczenia
Limit pamięci RAM. Redis działa w pamięci operacyjnej, która jest zasobem ograniczonym. Przy pełnym buforze Redis zaczyna usuwać starsze klucze według skonfigurowanej polityki ewikcji. W typowym object cache WordPressa nie powinien być jedynym miejscem przechowywania danych źródłowych, ale zbyt agresywne czyszczenie cache może powodować spadki wydajności, częstsze zapytania do MySQL i trudniejsze do diagnozowania problemy z działaniem strony.
Nieaktualne dane. Przy błędnej konfiguracji Redis może serwować dane, które zmieniły się w bazie, ale nie zostały zaktualizowane w cache. W praktyce wtyczki do Redis mają mechanizmy unieważniania cache — ale warto to zweryfikować.
Zależność od infrastruktury. Redis to zewnętrzna usługa. Jeśli usługa Redis przestanie działać, WordPress powinien traktować to jako brak cache i odpytywać bazę bezpośrednio — ale nie każda implementacja radzi sobie z tym płynnie.
Więcej o utrzymaniu bazy danych: Czyszczenie bazy danych w WordPress.