Redis – szybki magazyn danych w pamięci

Redis (REmote DIctionary Server) to wydajna baza danych typu key-value działająca w pamięci operacyjnej (RAM), zaprojektowana z myślą o szybkości, prostocie i wszechstronności. Jest wykorzystywana wszędzie tam, gdzie liczy się wydajność i niskie opóźnienia – od cache’owania po systemy kolejkowe, liczniki, systemy sesji czy pub/sub.

Kluczowe cechy Redis

  • In-memory – dane przechowywane są w RAM, co pozwala na błyskawiczny dostęp.
  • Struktury danych – Redis obsługuje nie tylko proste stringi, ale też listy, zestawy, hashe, zbiory uporządkowane (sorted sets), bitmapy, hiperloglogi, streamy i inne.
  • Persistence – mimo że działa w pamięci, Redis umożliwia trwałe zapisy na dysk (RDB lub AOF).
  • Replikacja i wysokodostępność – wsparcie dla master-replica, Redis Sentinel i Redis Cluster.
  • Atomiczne operacje – gwarantowane operacje atomowe na strukturach danych.
  • Pub/Sub – mechanizm komunikacji międzyprocesowej.
  • Lua scripting – możliwość wykonywania skryptów bezpośrednio na serwerze Redis.

Najczęstsze zastosowania

Redis bywa wykorzystywany jako:

  1. Cache – np. z poziomu PHP, Node.js, Python itp. (z TTL dla wygasających danych).
  2. Session store – w aplikacjach webowych (np. WordPress, Laravel, Django).
  3. Liczniki i ranking – np. systemy głosowania, liczba odwiedzin.
  4. Kolejki zadań – lekkie message brokery (np. z Sidekiq, BullMQ).
  5. Pub/Sub i real-time – np. czaty, powiadomienia, gry multiplayer.
  6. Tymczasowa baza danych – szybki storage np. dla analiz danych lub obliczeń.

Podstawowe polecenia

Przykłady komend Redis CLI:

SET klucz "wartość"
GET klucz
INCR licznik
LPUSH lista "element"
LRANGE lista 0 -1
HSET user:1 name "Maciej"
HGETALL user:1
EXPIRE klucz 60
DEL klucz

Redis w ekosystemie

Redis jest obsługiwany przez większość języków i frameworków. Istnieją gotowe biblioteki klienckie dla PHP (predis, php-redis), Python (redis-py), Node.js (ioredis), Java (lettuce, jedis), Go (go-redis) i wielu innych.

Popularne narzędzia wspierające Redis:

  • Laravel – cache, sesje, kolejki (via Horizon).
  • Symfony – Cache Component, Messenger.
  • WordPress – np. z Redis Object Cache dla przyspieszenia działania.
  • WooCommerce – cache dla koszyków, stanów magazynowych, sesji.

Tryby zapisu i trwałość

Redis wspiera dwie główne metody trwałości danych:

  • RDB – snapshot pamięci w regularnych odstępach czasu.
  • AOF – log wszystkich operacji zapisu (z możliwością rekonstrukcji danych).

Można je używać równocześnie lub wyłączyć całkowicie w przypadku pełnego cache’u.

Skalowanie i HA

Redis obsługuje:

  • Replikację – master → replica.
  • Redis Sentinel – monitoring, failover, autokonfiguracja klienta.
  • Redis Cluster – automatyczny sharding i skalowanie poziome.

Wady i ograniczenia

  • Wszystkie dane mieszczą się w RAM – ograniczenia kosztowe i pojemnościowe.
  • Brak pełnych możliwości SQL – Redis to nie relacyjna baza.
  • Wymaga ostrożnego projektowania TTL i strategii czyszczenia.

Instalacja (lokalnie)

# Ubuntu
sudo apt update
sudo apt install redis-server

# Start i test
sudo systemctl start redis
redis-cli ping

Podsumowanie

Redis to lekki, szybki i elastyczny system danych w pamięci, idealny do zastosowań, gdzie liczy się niskie opóźnienie i szybki dostęp. Sprawdza się jako cache, bufor, licznik czy silnik do komunikacji między usługami. Mimo swojej prostoty, oferuje ogromną moc – o ile dobrze go użyjesz.

Linki

Oficjalna strona Redis

Jak użyć Redis z najnowszym PHP