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:
- Cache – np. z poziomu PHP, Node.js, Python itp. (z TTL dla wygasających danych).
- Session store – w aplikacjach webowych (np. WordPress, Laravel, Django).
- Liczniki i ranking – np. systemy głosowania, liczba odwiedzin.
- Kolejki zadań – lekkie message brokery (np. z Sidekiq, BullMQ).
- Pub/Sub i real-time – np. czaty, powiadomienia, gry multiplayer.
- 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.