Redis to baza danych, która trzyma dane w pamięci RAM zamiast na dysku, dzięki czemu odpowiada na zapytania w ułamku milisekundy. Na hostingu najczęściej działa jako pamięć podręczna (cache) dla aplikacji takich jak WordPress, WooCommerce czy Magento: zapamiętuje wyniki ciężkich zapytań do bazy MySQL i podaje je ponownie bez angażowania serwera bazy danych. Dzięki temu gwarantuje krótszy czas ładowania dynamicznych podstron, szybszy panel administracyjny i mniejsze obciążenie bazy danych przy większym ruchu. W tym artykule wyjaśniamy jak działa Redis, do czego się go używa, czym różni się od cache strony i kiedy naprawdę warto go włączyć.
- Redis, co to jest i jak działa?
- Do czego służy Redis?
- Redis a cache strony, czym się różnią?
- Redis, Memcached i MySQL w porównaniu
- Kiedy warto włączyć Redis?
- Redis i Valkey, co warto wiedzieć?
Redis, co to jest i jak działa?
Nazwa Redis to skrót od Remote Dictionary Server. Projekt powstał w 2009 roku i dziś jest jednym z najpopularniejszych narzędzi do przechowywania danych tymczasowych na świecie.
Redis działa w modelu klucz-wartość. Każda informacja jest zapisana pod unikalną nazwą (kluczem), a aplikacja odczytuje ją, podając tę nazwę. Przypomina to szatnię z numerkami: oddajesz płaszcz, dostajesz numerek, a przy wyjściu pracownik od razu wie, gdzie go szukać, bez przeszukiwania całej szatni.
Kluczowa różnica w porównaniu z MySQL to miejsce przechowywania danych. MySQL zapisuje je na dysku i przy każdym zapytaniu musi je odszukać, przefiltrować i złożyć w wynik. Redis trzyma wszystko w pamięci RAM, która jest wielokrotnie szybsza od nawet najszybszego dysku NVMe.
Jakie dane przechowuje Redis?
Redis to nie tylko proste pary „nazwa i tekst”. Obsługuje kilka struktur danych, z których korzystają programiści:
- ciągi znaków (strings): tekst, liczby, gotowe fragmenty HTML,
- hasze (hashes): obiekty z polami, na przykład dane użytkownika,
- listy (lists): kolejki zadań do wykonania,
- zbiory i zbiory sortowane (sets, sorted sets): unikalne wartości i rankingi,
- strumienie (streams): dzienniki zdarzeń.
Czy dane w Redis znikają po restarcie?
Nie muszą. Redis potrafi okresowo zapisywać kopię danych na dysk (tryby RDB i AOF), więc po restarcie wczytuje je z powrotem. W zastosowaniu jako cache nie ma to jednak dużego znaczenia: jeśli dane z cache znikną, aplikacja po prostu pobierze je ponownie z bazy MySQL. Pierwsze wyświetlenia strony będą chwilę wolniejsze, ale nic nie zostanie utracone.
Do czego służy Redis?
Na hostingu stron WWW Redis ma kilka typowych zastosowań:
- Object cache w WordPress: przechowuje wyniki zapytań do bazy danych, opcje, menu i dane wtyczek. To najczęstsze zastosowanie na hostingu współdzielonym.
- Sesje użytkowników: dane zalogowanych klientów, zawartość koszyka w sklepie internetowym.
- Kolejki zadań: wysyłka maili, generowanie miniatur, synchronizacja z hurtownią wykonywane w tle.
- Liczniki i limity: liczba wyświetleń, ograniczanie liczby prób logowania.
- Cache w innych aplikacjach: Magento, PrestaShop, Laravel, Symfony i wiele innych frameworków ma gotowe sterowniki do Redis.
Redis a cache strony, czym się różnią?
To najczęstsze nieporozumienie. Cache strony i cache obiektów działają na różnych poziomach i uzupełniają się, a nie zastępują.
- Cache strony (page cache), na przykład LiteSpeed Cache, zapisuje gotowy kod HTML całej podstrony. Kolejny odwiedzający dostaje gotowy plik bez uruchamiania PHP i bazy danych. To najszybsza metoda, ale działa tylko dla stron, które wyglądają tak samo dla wszystkich.
- Cache obiektów (object cache), czyli Redis, zapisuje pojedyncze klocki, z których WordPress składa stronę: wyniki zapytań, ustawienia, listy produktów. Przydaje się tam, gdzie page cache nie może zadziałać: w koszyku, panelu klienta, kokpicie WordPress, wynikach wyszukiwania.
Optymalna konfiguracja dla WordPress to oba mechanizmy jednocześnie: page cache dla zwykłych odwiedzających i Redis dla wszystkiego, co dynamiczne.
Redis, Memcached i MySQL w porównaniu
| Cecha | Redis | Memcached | MySQL |
|---|---|---|---|
| Gdzie trzyma dane | RAM (opcjonalnie zapis na dysk) | wyłącznie RAM | dysk |
| Czas odpowiedzi | poniżej 1 ms | poniżej 1 ms | od kilku do kilkuset ms |
| Struktury danych | wiele (listy, hasze, zbiory, strumienie) | tylko proste wartości | tabele relacyjne |
| Trwałość danych | opcjonalna | brak, dane giną po restarcie | pełna |
| Typowa rola na hostingu | object cache, sesje, kolejki | object cache | główna baza danych strony |
Czasy odpowiedzi orientacyjne, zależne od konfiguracji serwera i rozmiaru danych.
Redis nie zastępuje MySQL. Strona nadal zapisuje wpisy, zamówienia i klientów w bazie MySQL, a Redis jedynie przyspiesza do nich dostęp. W porównaniu z Memcached wygrywa elastycznością, dlatego większość nowoczesnych wtyczek cache wybiera właśnie Redis.
Kiedy warto włączyć Redis?
Redis daje wyraźny efekt, gdy:
- prowadzisz sklep WooCommerce lub inny serwis z koszykiem i kontami klientów,
- panel WordPress działa wolno, mimo że strona dla odwiedzających ładuje się szybko,
- masz dużo wtyczek, które intensywnie korzystają z bazy danych,
- strona ma ruch zalogowanych użytkowników: forum, platforma kursów, serwis członkowski.
Mniejszy zysk zobaczysz na prostym blogu lub stronie wizytówce, które i tak w całości obsługuje page cache. Tam Redis nie zaszkodzi, ale różnica może być niezauważalna.
Redis i Valkey, co warto wiedzieć?
W 2024 roku twórcy Redis zmienili licencję projektu na mniej otwartą. W odpowiedzi społeczność, wspierana przez Linux Foundation, utworzyła Valkey, czyli w pełni otwartoźródłową kontynuację Redis. Valkey używa tego samego protokołu i komend, więc wtyczki i aplikacje przygotowane dla Redis działają z nim bez zmian.
Dla właściciela strony nie ma to praktycznego znaczenia. Wtyczka Redis Object Cache w WordPress połączy się zarówno z Redis, jak i z Valkey.
Na hostingu VH.pl każde konto korzysta z własnej, odizolowanej instancji Redis. Dzięki izolacji dane Twojej strony nie mieszają się z danymi innych klientów serwera.