Redis to magazyn struktury danych typu open source (na licencji BSD), używany jako baza danych, pamięć podręczna i broker komunikatów. Można go łączyć z innymi bazami danych, takimi jak MySQL, aby zapewnić mechanizm buforowania zapytań.
W tym artykule pokażemy, jak buforować zapytania MySQL, które są wymagane do renderowania stron WordPress. Zapewni nam to znaczny wzrost wydajności, choć z pewnymi zastrzeżeniami.
Wprowadzenie do lepszego buforowania WordPress
WordPress używa bazy danych MySQL do buforowania wewnętrznych obiektów aplikacji (okruszków, elementów menu itp.), których wygenerowanie może być kosztowne. Ponieważ baza danych obsługuje również zapytania dotyczące żądań stron, jest to prawdopodobnie najczęstsze wąskie gardło i często powoduje zwiększone czasy ładowania.
Redis zapewnia mechanizm buforowania, który działa jako alternatywa dla bazy danych MySQL. Jeśli użytkownik odwiedza stronę WordPress, zapytania MySQL wymagane do wygenerowania strony są obsługiwane przez Redis, który buforuje wyniki. Powoduje to niesamowicie szybkie czasy ładowania, porównywalne ze stronami statycznymi.
Innym popularnym wyborem buforowania jest Memcached. Jednak Redis robi prawie wszystko, co robi Memcached, więc będziemy używać hostingu ScaleGrid dla Redis™* ze względu na ten samouczek.
Jak działa buforowanie Redis?
Kiedy użytkownik po raz pierwszy żąda strony WordPress, zapytanie MySQL jest wykonywane na serwerze. Redis buforuje to zapytanie, więc gdy inny użytkownik zażąda tej samej strony WordPress, wyniki są dostarczane z Redis bez konieczności ponownego przeszukiwania bazy danych.
Jeśli zapytanie nie jest buforowane w Redis, wyniki są dostarczane przez MySQL, które są następnie dodawane do pamięci podręcznej Redis.
Jeśli konkretna wartość jest aktualizowana w bazie danych, odpowiadająca jej wartość Redis jest unieważniana, aby zapobiec wyświetlaniu użytkownikowi złych danych z pamięci podręcznej.
Wymagania samouczka
Oto lista technologii użytych w tym artykule:
- 2 instalacje WordPress (z wtyczką i bez, do testów porównawczych)
- Serwer Redis™
- Wtyczka pamięci podręcznej obiektów WP Redis
Instalacja WordPress
Możesz pobrać najnowszą wersję WordPressa tutaj i skonfigurować dwie różne instalacje na hoście takim jak Heroku lub AWS.
Serwer Redis
ScaleGrid zapewnia światowej klasy obsługę klastrów Redis™ Standalone i Master/Slave z ulepszonymi funkcjami bezpieczeństwa. Będziemy używać klastra Standalone Redis™ hostowanego na ScaleGrid ze strategią buforowania Allkeys-LRU. Możesz zarejestrować się, aby uzyskać bezpłatną 30-dniową wersję próbną naszego hostingu dla Redis™, aby pomóc w tym samouczku.
Wtyczka pamięci podręcznej obiektów WP Redis
Wtyczka ta jest używana jako dodatek do instalacji WordPressa i może być skonfigurowana do korzystania z hosta Redis™. Wtyczkę znajdziesz tutaj.
Instrukcje konfiguracji:pamięć podręczna obiektów Redis dla WordPress
Oto kroki, aby zainstalować wtyczkę Redis Object Cache w instalacji WordPress.
Krok 1:Zainstaluj wtyczkę Redis Cache
W tym samouczku założono, że masz już skonfigurowane dwie nowe instalacje WordPressa. Na jednym z nich musisz zainstalować wtyczkę Redis Object Cache. Po zainstalowaniu wtyczki możesz ją aktywować z menu wtyczek.
Krok 2:Znajdź Redis w ustawieniach
Po aktywacji wtyczki w menu Ustawienia pojawi się opcja Redis.
Krok 3:Dodaj konfiguracje WordPress
Po skonfigurowaniu wtyczki musimy dodać opcje konfiguracyjne do pliku konfiguracyjnego WordPressa. Musisz przynajmniej skonfigurować następujące opcje:
define('WP_REDIS_HOST', ''); define('WP_REDIS_PASSWORD', '');
Powyższe opcje można znaleźć na stronie Szczegóły klastra ScaleGrid dla Redis™.
Zapisz konfigurację i włącz bufor obiektów. Jeśli uwierzytelnianie jest prawidłowe, powinieneś zobaczyć następujący ekran:
W tym momencie Redis został skonfigurowany jako pamięć podręczna dla Twojej instalacji WordPressa.
Monitorowanie i debugowanie zapytań WordPress
Wszystkie klastry Redis są instalowane z narzędziem wiersza poleceń Redis (redis-cli), którego można używać do monitorowania przychodzących żądań zapytań z WordPress. Oto zrzut ekranu, jak to może wyglądać:
Jeśli nie widzisz żadnych danych wyjściowych w konsoli, przejdź do witryny WordPress i odśwież.
Wskaźniki WordPress i Redis do śledzenia
Głównym wskaźnikiem do śledzenia jest czas wczytywania strony. Oto domyślna konfiguracja, której używamy do nowej instalacji:
- WordPress:4.9.5
- Redis:v.4.0.2
- Motyw WordPress:dwadzieścia siedemnaście
Na podstawie nowej instalacji z powyższymi parametrami, możemy zauważyć prawie 50% skrócenie czasu ładowania strony:
- Bez pamięć podręczna obiektów Redis =~900ms
- Z pamięć podręczna obiektów Redis =~400ms
Wady pamięci podręcznej obiektów Redis
Istnieje kilka zastrzeżeń dotyczących korzystania z metody pamięci podręcznej obiektów Redis w WordPress. Mechanizm buforowania nie działa dobrze, jeśli masz zainstalowanych wiele wtyczek i motywów. Wynika to z faktu, że wszystkie ich dane musiałyby być również buforowane w Redis.
Z naszego wcześniejszego artykułu dowiesz się również, jak buforować tweety za pomocą Node.js, Redis i Socket.io.
Jak zawsze, jeśli zbudujesz coś niesamowitego, napisz do nas o tym na Twitterze @scalegridio. Jeśli potrzebujesz pomocy w zarządzaniu lub hostowaniu bazy danych MongoDB® lub Redis™, skontaktuj się z nami pod adresem [email protected].