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

    1

    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

    2

    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

    3

    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

    4

    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

    5

    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

    6

    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-millisecond

    Przechowywanie sesji użytkowników z TTL. Automatyczne wygasanie (SETEX). Skalowalne między wieloma serwerami.

    Database Cache

    10-100x szybciej niż DB

    Cache wyników zapytań SQL. Cache-Aside pattern. Zmniejszenie obciążenia bazy o 80-90%.

    Rate Limiting

    1M+ ops/sec

    INCR + EXPIRE do liczenia żądań per użytkownik/IP. Algorytmy: Fixed Window, Sliding Window, Token Bucket.

    Job Queue

    Niskie opóźnienie

    LPUSH 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 latencja

    PUBLISH 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.

    Czytaj dalej

    Powiązane artykuły

    Kontakt

    Skontaktuj się z nami

    Porozmawiajmy o Twoim projekcie. Bezpłatna wycena w ciągu 24 godzin.

    Wyślij zapytanie

    Bezpłatna wycena w 24h
    Bez zobowiązań
    Indywidualne podejście
    Ekspresowa realizacja

    Telefon

    +48 790 814 814

    Pon-Pt: 9:00 - 18:00

    Email

    adam@fotz.pl

    Odpowiadamy w ciągu 24h

    Adres

    Plac Wolności 16

    61-739 Poznań

    Godziny pracy

    Pon - Pt9:00 - 18:00
    Sob - NdzZamknięte

    Wolisz porozmawiać?

    Zadzwoń teraz i porozmawiaj z naszym specjalistą o Twoim projekcie.

    Zadzwoń teraz