Nodea — logo

Redis

Redis (ang. Remote Dictionary Server) to działająca w pamięci RAM baza danych typu klucz-wartość, ceniona za ekstremalnie niskie opóźnienia — pojedyncze operacje wykonuje w mikrosekundach. Choć bywa nazywany „bazą", w praktyce pełni rolę uniwersalnej warstwy pośredniej między aplikacją a wolniejszym magazynem trwałym, takim jak MySQL czy PostgreSQL.

Jak działa Redis

Wszystkie dane Redis trzyma w pamięci operacyjnej, dzięki czemu odczyt i zapis są rzędy wielkości szybsze niż przy dysku. Nie jest to jednak zwykły cache — Redis rozumie strukturę przechowywanych wartości i udostępnia gotowe operacje na typach danych:

  • string — proste wartości, liczniki, flagi,
  • list — kolejki zadań (dodawanie i pobieranie z końców),
  • set i sorted set — zbiory unikatów i rankingi z wagą,
  • hash — obiekty o wielu polach, np. sesja użytkownika,
  • pub/sub i strumienie — przesyłanie zdarzeń w czasie rzeczywistym.

Aby dane nie zniknęły po restarcie, Redis oferuje trwałość w postaci migawek RDB i dziennika AOF; wspiera też replikację master-replica oraz klastrowanie dla wysokiej dostępności.

Zastosowanie w praktyce

Redis najczęściej odciąża bazę relacyjną jako bufor podręczny: gotowe wyniki zapytań lub całe fragmenty stron trafiają do pamięci i są serwowane w ułamku milisekundy. Poza tym pełni rolę magazynu sesji WWW, brokera dla kolejek zadań w tle (wysyłka maili, generowanie raportów), licznika limitów żądań (rate limiting) oraz szyny zdarzeń dla mechanizmów real-time. W środowiskach hostingowych i na serwerach VPS Redis bywa domyślnym silnikiem cache i sesji dla aplikacji opartych na PHP, co realnie skraca czas odpowiedzi pod obciążeniem. Popularne systemy CMS, takie jak WordPress czy sklepy oparte na Magento, korzystają z Redis do buforowania obiektów bazy danych, dzięki czemu ciężkie zapytania nie powtarzają się przy każdym odświeżeniu strony. W większych wdrożeniach Redis rozdziela się na osobne instancje — jedną na cache, drugą na kolejki — aby operacje o różnym profilu nie rywalizowały o pamięć i przepustowość, a awaria jednej roli nie pociągała za sobą drugiej.

Powiązane pojęcia

Najczęstsze pytania

Czy Redis traci dane po restarcie serwera?

Niekoniecznie. Redis trzyma dane w RAM, ale oferuje dwa mechanizmy trwałości: migawki RDB zapisywane okresowo na dysk oraz dziennik AOF rejestrujący każdą operację zapisu. Przy odpowiedniej konfiguracji dane przetrwają restart, choć Redis najczęściej stosuje się tam, gdzie ich ewentualna utrata jest akceptowalna.

Czym różni się Redis od Memcached?

Oba to szybkie magazyny w pamięci, ale Redis obsługuje bogate typy danych (listy, zbiory, hasze, sortowane zbiory), trwałość na dysku, replikację i pub/sub. Memcached jest prostszy i przechowuje wyłącznie proste pary klucz-wartość, co bywa wystarczające przy czystym cache'owaniu.