Redis

Szybka baza typu klucz-wartość działająca w pamięci RAM. Wykorzystywana jako pamięć podręczna, kolejka komunikatów i magazyn sesji.

Redis (od Remote Dictionary Server) to baza danych typu klucz-wartość, która trzyma wszystkie dane w pamięci RAM, a nie na dysku. Dzięki temu odpowiada na zapytania w czasie liczonym w mikrosekundach i potrafi obsłużyć setki tysięcy operacji na sekundę. Najczęściej spotkasz ją w roli pamięci podręcznej (cache), magazynu sesji użytkowników i prostej kolejki komunikatów. Stworzył ją Salvatore Sanfilippo (znany jako antirez) w 2009 roku.

Jak to działa i do czego służy

Model klucz-wartość oznacza, że każda dana ma swój unikalny klucz (np. user:42:session) i przypisaną wartość. Ale Redis to nie tylko zwykły słownik — obsługuje całe struktury danych: stringi, listy, zbiory, posortowane zbiory (sorted set), hashe, a nawet typy probabilistyczne. To dlatego nadaje się do tak różnych zadań: licznik wyświetleń, ranking graczy, kolejka zadań w tle czy ograniczanie liczby zapytań (rate limiting).

Trzymanie danych w RAM to źródło prędkości, ale i pułapka — pamięć jest ulotna. Redis radzi sobie z tym przez dwa mechanizmy trwałości: RDB (migawki stanu co jakiś czas) i AOF (zapis każdej operacji do logu). Większość operacji wykonuje jednowątkowo, więc nie musisz martwić się o blokady — komendy lecą jedna po drugiej.

Przykład z praktyki

Klasyk: cache wyniku ciężkiego zapytania do bazy SQL. Zamiast za każdym razem męczyć PostgreSQL, sprawdzasz najpierw Redis. Z poziomu redis-cli wygląda to tak:

  • SET produkt:99 "{...json...}" EX 300 — zapisuje wartość i ustawia jej wygaśnięcie po 300 sekundach.
  • GET produkt:99 — odczytuje. Jeśli zwróci nil, dane wygasły i lecisz po nie do bazy.

Ten parametr EX (czas życia klucza, TTL) to serce cache’owania — dane same znikają, gdy się zdezaktualizują.

Częste błędy i mity

„Redis to tylko cache” — nieprawda, z włączoną trwałością bywa głównym magazynem danych. „Skoro w RAM, to dane przepadną” — nie, jeśli skonfigurujesz RDB/AOF. Realne pułapki: brak ustawionego maxmemory i polityki eksmisji (baza puchnie aż serwer padnie), oraz wystawienie Redisa na publiczny adres bez hasła — domyślny port 6379 to ulubiony cel skanerów.

Warto wiedzieć o licencji: po zamieszaniu w 2024 roku, od maja 2025 i wersji Redis 8 projekt wrócił do otwartego oprogramowania pod licencją AGPLv3 (obok opcji RSALv2 i SSPLv1).

Pojęcia powiązane

Memcached (prostszy konkurent do cache), Valkey (otwarty fork Redisa), baza klucz-wartość, NoSQL, pamięć podręczna, TTL, pub/sub, Redis Cluster.