Redis — co to jest i jak działa?
Redis to in-memory baza danych używana jako cache, kolejka i message broker. Poznaj struktury danych, wzorce cachowania i kluczowe zastosowania Redis w produkcji.
Czym jest Redis?
Redis (Remote Dictionary Server) to open-source'owy in-memory data store — baza danych, cache i message broker działający w pamięci RAM. Oferuje ekstremalnie niskie opóźnienia (poniżej 1ms) i przepustowość ponad 1 milion operacji na sekundę.
W odróżnieniu od tradycyjnych baz danych (PostgreSQL, MySQL) Redis nie zapisuje na dysk przy każdej operacji — dane są w RAM. Persistence (trwałość) jest opcjonalna i realizowana przez snapshots (RDB) lub logi operacji (AOF).
sub-1ms
Typowe opóźnienie odczytu/zapisu — szybciej niż jakikolwiek dysk SSD
1M+ ops/s
Operacji na sekundę na jednym węźle. Skaluje się horyzontalnie przez Cluster
2009
Rok stworzenia przez Salvatore Sanfilippo. Od 2015 r. sponsorowany przez Redis Labs
Struktury danych Redis
String
Podstawowy typ — tekst, liczba, dane binarne (do 512MB). Atomowe operacje INCR/DECR.
Komendy:
SET user:1 'Jan Kowalski'
GET user:1
INCR page:views
SETEX session:abc 3600 '{...}'
Zastosowanie:
Cache, liczniki, sesje, rate limiting
List
Dwustronna kolejka (deque). LPUSH/RPUSH dodaje, LPOP/RPOP zdejmuje. Maks 2^32-1 elementów.
Komendy:
LPUSH queue:emails 'email1'
RPOP queue:emails
LRANGE recent:posts 0 9
Zastosowanie:
Kolejki zadań, aktywność (ostatnie N elementów), historia
Set
Nieuporządkowany zbiór unikalnych wartości. Operacje zbiorów: SUNION, SINTER, SDIFF.
Komendy:
SADD tags:post:1 'tech' 'redis'
SMEMBERS tags:post:1
SINTER user:1:follows user:2:follows
Zastosowanie:
Tagi, śledzenie unikalnych użytkowników, wspólni znajomi
Sorted Set (ZSet)
Set z numerycznym score. Automatycznie posortowany. ZADD dodaje z score, ZRANGE zwraca po rankingu.
Komendy:
ZADD leaderboard 1500 'user:1'
ZREVRANGE leaderboard 0 9 WITHSCORES
ZSCORE leaderboard 'user:1'
Zastosowanie:
Rankingi, leaderboardy, priority queues, rate limiting
Hash
Mapa key-value. Idealny do przechowywania obiektów. HSET ustawia pola, HGET pobiera.
Komendy:
HSET user:1 name 'Jan' email 'jan@ex.com'
HGET user:1 name
HGETALL user:1
Zastosowanie:
Profile użytkowników, obiekty, konfiguracja
Stream
Append-only log zdarzeń. Podobny do Kafka ale w pamięci. Consumer groups, auto-ID.
Komendy:
XADD events * type 'click' page '/home'
XREAD COUNT 10 STREAMS events 0
XGROUP CREATE events workers $
Zastosowanie:
Event sourcing, real-time analytics, message broker
Kluczowe zastosowania Redis
Session Store
Sub-millisecondPrzechowywanie sesji użytkowników z TTL. Automatyczne wygasanie (SETEX). Skalowalne między wieloma serwerami.
Database Cache
10-100x szybciej niż DBCache wyników zapytań SQL. Cache-Aside pattern. Zmniejszenie obciążenia bazy o 80-90%.
Rate Limiting
1M+ ops/secINCR + EXPIRE do liczenia żądań per użytkownik/IP. Algorytmy: Fixed Window, Sliding Window, Token Bucket.
Job Queue
Niskie opóźnienieLPUSH do dodawania zadań, BRPOP do pobierania (blocking). Priorytety przez Sorted Sets.
Real-time Leaderboard
O(log N)Sorted Sets (ZADD score, ZREVRANK) — aktualizacja i pobieranie rankingów w O(log N).
Pub/Sub Messaging
Bardzo niska latencjaPUBLISH do kanałów, SUBSCRIBE do subskrypcji. Real-time notifications, chat, live updates.
FAQ — Redis
Co to jest Redis?
Redis (Remote Dictionary Server) to open-source'owy, in-memory data structure store — baza danych, cache i message broker działający w pamięci RAM. Stworzony przez Salvatore Sanfilippo w 2009 roku. Redis przechowuje dane w RAM co zapewnia ekstremalnie niskie opóźnienia (poniżej 1ms) i wysoką przepustowość (ponad 1 milion operacji/sekundę). Wspiera persistence (RDB snapshots, AOF log) i replikację. Używany przez Twitter, GitHub, Pinterest, Snapchat, Stack Overflow.
Jakie struktury danych oferuje Redis?
Redis oferuje bogaty zestaw struktur danych: Strings (podstawowa, binarna, do 512MB), Lists (kolejki FIFO/LIFO, lpush/rpop), Sets (unikalne elementy, operacje zbiorów — union, intersection), Sorted Sets (ZSet — elementy z score, ranking), Hashes (mapy key-value, profil użytkownika), Bitmaps (operacje bitowe), HyperLogLog (szacowanie unikalnych elementów), Streams (log zdarzeń, podobny do Kafka), Pub/Sub (komunikacja asynchroniczna), Geospatial (lokalizacja, geofencing).
Redis jako cache — jak to działa?
Redis cache stosuje wzorzec Cache-Aside (Lazy Loading): aplikacja najpierw sprawdza cache (GET key), jeśli brak (cache miss) — pobiera z bazy, zapisuje do Redis (SET key value EX 3600), przy następnym żądaniu — cache hit, brak zapytania do bazy. Kluczowe parametry: TTL (Time to Live) — czas wygaśnięcia danych; eviction policy — co wyrzucić gdy RAM jest pełny (LRU — Least Recently Used jest domyślne). Redis jako cache może zmniejszyć obciążenie bazy danych o 80-90%.
Jak Redis obsługuje persistence (trwałość)?
Redis oferuje dwa mechanizmy trwałości: RDB (Redis Database) — snapshot stanu bazy w regularnych interwałach (np. co 5 minut). Szybkie odtwarzanie, ale ryzyko utraty danych z ostatnich minut. AOF (Append Only File) — loguje każdą operację zapisu. Bardziej niezawodne, większy plik, wolniejsze odtwarzanie. Można łączyć oba. Dla czystego cache persistence jest wyłączane (maxmemory + eviction policy). Redis 7.0 wprowadził RDB + AOF hybrid persistence.
Co to jest Redis Cluster i Redis Sentinel?
Redis Sentinel to system High Availability: monitoruje master i repliki, automatycznie failover gdy master pada (promuje replikę na master), powiadamia klientów o nowym masterze. Redis Cluster to horyzontalne skalowanie: automatycznie dzieli dane między wiele węzłów (sharding) przez hash slots (16384 slotów), każdy węzeł odpowiada za podzbiór slotów. Cluster umożliwia skalowanie poza limit RAM pojedynczego serwera. Managed Redis: AWS ElastiCache, Google Memorystore, Redis Cloud.
Powiązane artykuły
Skontaktuj się z nami
Porozmawiajmy o Twoim projekcie. Bezpłatna wycena w ciągu 24 godzin.
Wyślij zapytanie
Telefon
+48 790 814 814
Pon-Pt: 9:00 - 18:00
adam@fotz.pl
Odpowiadamy w ciągu 24h
Adres
Plac Wolności 16
61-739 Poznań
Godziny pracy
Wolisz porozmawiać?
Zadzwoń teraz i porozmawiaj z naszym specjalistą o Twoim projekcie.
Zadzwoń teraz