Amazon ElastiCache
Database Cloud Practitioner Solutions Architect Associate

Amazon ElastiCache

Amazon ElastiCache

W pelni zarzadzana usluga cache in-memory w chmurze AWS. Obsluguje Redis i Memcached - przyspieszaj aplikacje dzieki opoznieniom rzędu mikrosekund.

Amazon ElastiCache to w pelni zarzadzana usluga cache in-memory, ktora obsluguje dwa popularne silniki: Redis i Memcached. Dzieki przechowywaniu danych w pamieci RAM zamiast na dysku, ElastiCache oferuje czasy odpowiedzi na poziomie mikrosekund - setki razy szybciej niz tradycyjna baza danych.

ElastiCache jest idealny do cachowania wynikow zapytan do bazy danych, przechowywania sesji uzytkownikow, rankingów w czasie rzeczywistym czy kolejek wiadomosci (pub/sub). AWS zajmuje sie za Ciebie patchowaniem, backupami, monitoringiem i failoverem.

Czy wiesz, ze...

Redis to skrot od REmote DIctionary Server. Zostal stworzony w 2009 roku przez Salvatore Sanfilippo. ElastiCache z Redis osiaga opoznienia na poziomie 100-200 mikrosekund - to okolo 1000x szybciej niz typowa baza relacyjna! Wiele z najpopularniejszych serwisow na swiecie (Twitter, GitHub, Stack Overflow) korzysta z Redis jako warstwy cache.

Pro Tip

Zawsze ustawiaj TTL na kluczach w cache! Bez TTL dane moga byc nieskonczonego zycia i szybko zapelnic pamiec. Dobra praktyka to ustawienie roznych TTL dla roznych typow danych: krotkie (60s) dla danych czesto sie zmieniajacych, dluzsze (3600s) dla rzadko modyfikowanych. Pamietaj tez o strategii cache invalidation - to jeden z najtrudniejszych problemow w informatyce.

Uwaga

ElastiCache dziala TYLKO w VPC, nie ma dostepu z Internetu. Redis bez Multi-AZ moze stracic dane przy awarii noda. Eviction policy (domyslnie volatile-lru) moze usuwac klucze, ktore uwazasz za wazne. Monitoruj metryki EngineCPUUtilization i DatabaseMemoryUsagePercentage. Pamietaj: ElastiCache ma ograniczony free tier (750 godzin cache.t3.micro przez 12 miesiecy dla nowych kont), ale poza nim nawet najmniejszy node kosztuje ~$12/miesiac.

ElastiCache to w pelni zarzadzany serwis cache in-memory kompatybilny z Redis i Memcached. Umieszczony miedzy aplikacja a baza danych, redukuje latency odczytow z milisekund do mikrosekund i odciaza baze danych nawet o 80-90%. AWS zajmuje sie patchowaniem, monitoringiem, backupami i failoverem.

1

Wybor silnika: Redis vs Memcached

Redis oferuje bogate struktury danych (strings, hashes, lists, sets, sorted sets, streams), replikacje, persistence, pub/sub i transakcje. Memcached to prosty key-value cache z wielowatkowym modelem i auto-discovery. Wybieraj Redis w 95% przypadkow - jedyny argument za Memcached to wielowatkowosc dla bardzo prostych cache z duzymi wartosciami. Od 2024 AWS rekomenduje ElastiCache Serverless (Redis) jako domyslny wybor.

2

Wybor typu node

Typy node determinuja RAM, CPU i siec. Rodzina r7g (Graviton3) to standard: r7g.large (13.07 GB) dla wiekszosci workloadow, r7g.xlarge (26.32 GB) dla wiekszych datasetow. Rodzina r6gd oferuje data tiering - przechowuje rzadziej uzywane dane na NVMe SSD, co pozwala na 5x wiecej danych za ta sama cene. Pamietaj: Redis uzywa ok. 30% wiecej RAM niz sam dataset (overhead na struktury).

3

Cluster Mode: wlaczony vs wylaczony

Cluster Mode Disabled: jeden shard z primary i do 5 replikami (max ok. 200 GB danych). Cluster Mode Enabled: do 500 shardow, kazdy z primary i replikami - laczna pojemnosc do kilkudziesieciu TB. Dane sa automatycznie partycjonowane przez hash sloty (16384 slotow rozdzielonych miedzy shardy). Wlaczaj Cluster Mode gdy potrzebujesz wiecej niz 200 GB lub ponad 150,000 operacji/s.

4

Replikacja i automatyczny failover

Kazdy shard ma jeden node primary (read/write) i do 5 replik (read-only). Replikacja jest asynchroniczna z typowym lagiem ponizej 1 ms. Multi-AZ z Auto-Failover: gdy primary pada, ElastiCache automatycznie promuje replike w innej AZ na primary w ciagu 15-30 sekund. DNS endpoint jest aktualizowany automatycznie - aplikacja nie wymaga zmian.

5

Parameter Groups - tuning silnika

Parameter Groups kontroluja konfiguracje silnika Redis/Memcached. Kluczowe parametry Redis: maxmemory-policy (eviction strategy - allkeys-lru dla cache, noeviction dla queue), timeout (zamykanie idle connections), tcp-keepalive (wykrywanie martwych polaczen). Tworz custom parameter groups zamiast modyfikowac default - pozwala to na latwy rollback i porownywanie konfiguracji miedzy srodowiskami.

6

Backupy i snapshoty

Automatyczne backupy (tylko Redis): codzienne snapshoty z retencja 1-35 dni. Backup tworzy fork procesu Redis - przy duzych datasetach (50+ GB) moze zuzywac podwojna ilosc RAM. Planuj backup window na godziny niskiego ruchu. Mozesz tez tworzyc reczne snapshoty przed zmianami. Snapshoty sa przechowywane w S3 i mozna je uzywac do tworzenia nowych klastrow lub migracji miedzy regionami.

Sprawdzone wzorce cachowania i praktyki operacyjne, ktore roznia dojrzale wdrozenia ElastiCache od tych powodujacych incydenty.

Redis vs Memcached - matryca decyzyjna

Redis: persistence, replikacja, pub/sub, Lua scripting, sorted sets (leaderboardy), streams (event log), TTL na poziomie klucza, transakcje. Memcached: wielowatkowosc, auto-discovery, prostsze skalowanie horyzontalne. W praktyce wybieraj Redis - Memcached ma sens tylko przy bardzo prostym cache z kluczami >1 MB i brakiem potrzeby persistence. Od 2024 ElastiCache Serverless (Redis) eliminuje potrzebe zarzadzania nodami.

Poczatkujacy

Cluster Mode Enabled dla skali 16+ nodow

Cluster Mode Disabled jest prostszy, ale ograniczony do jednego sharda (max ~200 GB, ~150k ops/s). Cluster Mode Enabled partycjonuje dane na wiele shardow - kazdy obsluguje niezalezna czesc keyspace. Online resharding pozwala dodawac shardy bez downtime. Przy projektowaniu kluczy unikaj hot key problem - uzywaj hash tagow {prefix} do grupowania powiazanych kluczy na jednym shardzie.

Zaawansowany

Data Tiering (r6gd) - 5x wiecej danych

Node typy r6gd maja dysk NVMe SSD obok RAM. Rzadziej uzywane dane sa automatycznie przenoszone z RAM na SSD (latency rosnie z mikrosekund do niskich milisekund). Efekt: r6gd.xlarge przechowuje do 500 GB danych vs ~100 GB na r6g.xlarge za podobna cene. Idealne dla cache z duzym datasetem i zroznicowanym wzorcem dostepu (80/20 rule). Monitoruj metryki CurrItems i BytesUsedForCache.

Zaawansowany

Connection pooling - nie otwieraj polaczen per request

Redis obsluguje polaczenia single-threaded - kazde nowe polaczenie TCP kosztuje. Uzywaj connection poolingu w aplikacji (np. redis-py ConnectionPool, Lettuce w Java, ioredis w Node.js). Typowa konfiguracja: pool size = liczba workerow aplikacji, min-idle = 5-10, max-wait = 200ms. Monitoruj metryki CurrConnections i NewConnections w CloudWatch - nagle skoki oznaczaja wyciek polaczen.

Poczatkujacy

Lazy Loading vs Write-Through

Lazy Loading (Cache-Aside): aplikacja sprawdza cache, przy miss czyta z DB i zapisuje do cache z TTL. Zaleta: cache zawiera tylko potrzebne dane. Wada: pierwszy odczyt zawsze trafia do DB. Write-Through: kazdy zapis do DB jednoczesnie zapisuje do cache. Zaleta: cache zawsze aktualny. Wada: nadmiar danych w cache. Najlepsza praktyka: polacz oba - write-through dla hot data, lazy loading z TTL dla reszty.

Poczatkujacy

Global Datastore - replikacja cross-region

Global Datastore replikuje klaster Redis do max 2 regionow wtornych z lagiem ponizej 1 sekundy. Region wtorny obsluguje odczyty lokalne (niskie latency dla uzytkownikow globalnych). Failover do regionu wtornego trwa ponizej 1 minuty. Konfiguruj secondary cluster z ta sama lub mniejsza liczba replik. Koszt: platisz za nody w kazdym regionie + transfer danych miedzy regionami.

Zaawansowany

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon ElastiCache bezposrednio w konsoli AWS.

Do czego sluzy Amazon ElastiCache?

01

Cachowanie zapytan do bazy danych

Przechowuj wyniki czestych zapytan SQL w cache. Zamiast odpytywac RDS za kazdym razem, pobieraj dane z pamieci w mikrosekundach.

02

Przechowywanie sesji uzytkownikow

Trzymaj sesje HTTP w Redis zamiast na dysku. Dzieki temu sesje przetrwaja restart serwera aplikacji i dzialaja w srodowisku multi-server.

03

Rankingi i liczniki w czasie rzeczywistym

Redis Sorted Sets idealnie nadaja sie do tablic wynikow w grach, rankingów popularnosci czy licznikow w czasie rzeczywistym.

04

Kolejki wiadomosci (Pub/Sub)

Redis obsluguje wzorzec publish/subscribe do komunikacji miedzy mikroserwisami z minimalnymi opoznieniami.

Co musisz wiedziec?

Redis vs Memcached

Redis oferuje bogate struktury danych (listy, zbiory, hashe), replikacje, persistence i pub/sub. Memcached jest prostszy - czysty cache klucz-wartosc, ale obsluguje wielowatkowosc.

Cluster Mode

W trybie klastrowym Redis dzieli dane na shardy (partycje). Pozwala to skalowac horizontalnie - wiecej shardow = wiecej pamieci i przepustowosci.

Replication Group

Grupa replikacji sklada sie z primary node (zapis/odczyt) i do 5 replik odczytu. W razie awarii primary - automatyczny failover do repliki.

Auto-failover

Jesli primary node ulegnie awarii, ElastiCache automatycznie promuje replike na nowego primary. Przełaczenie trwa zwykle 30-60 sekund.

Eviction Policy

Polityka usuwania danych gdy pamiec sie zapelni. Najczesciej uzywana: allkeys-lru (usuwaj najdawniej uzywane klucze).

TTL (Time To Live)

Czas zycia klucza w cache. Po uplywie TTL klucz jest automatycznie usuwany. Kluczowy mechanizm do utrzymania swiezosci danych w cache.

Architektura: Cache-Aside Pattern z ElastiCache Redis

Wzorzec cache-aside (lazy loading), w ktorym aplikacja sprawdza cache przed odczytem z bazy danych. Cache hit zwraca dane w mikrosekund, cache miss laduje dane z RDS i zapisuje do cache z TTL.

Aplikacja Sprawdza cache przed kazdym odczytem, zapisuje wyniki do cache po miss
GET/SET (TCP :6379)
ElastiCache (Redis)
ElastiCache (Redis) Cluster Mode Enabled, Multi-AZ, latency ponizej 1 ms dla cache hit
Odpowiedz < 1ms
Cache Hit Dane znalezione w cache - zwrot w mikrosekund, brak obciazenia bazy
Fallback do DB
Cache Miss Dane nie znalezione - odczyt z bazy, zapis do cache z TTL (np. 300s)
SELECT (TCP :5432)
Amazon RDS
Amazon RDS Zrodlo prawdy (source of truth), obciazenie zredukowane o 80-90% dzieki cache
Monitoring + alarmy
CloudWatch
CloudWatch Metryki: CacheHitRate, EngineCPUUtilization, CurrConnections, Evictions
Ustaw TTL na wszystkich kluczach (np. 300-3600s) - zapobiega to nieskonczonemu rozrostowi cache i gwarantuje ostateczna spojnosc z baza danych.
Monitoruj metryki Evictions i CacheHitRate - spadek hit rate ponizej 80% lub wzrost evictions oznacza, ze cache jest za maly i wymaga wiekszych nodow lub dodatkowych shardow.
Wlacz Multi-AZ z Auto-Failover na produkcji - bez tego awaria node primary powoduje calkowita utrate cache i thundering herd na baze danych.

Porownanie Redis vs Memcached w ElastiCache

Cecha Redis Memcached
Persystencja danych Tak (AOF, RDB snapshoty) Nie (tylko pamiec)
Typy danych Strings, Hashes, Lists, Sets, Sorted Sets, Streams Tylko key-value (string)
Klasteryzacja Redis Cluster (do 500 nodow) Wbudowane shardowanie
Replikacja Tak (read replicas, failover) Nie
Pub/Sub Tak (wbudowane) Nie
Wielowatkowosc Jednowatkowy (I/O threads od 6.0) Wielowatkowy
Najlepszy dla Sesje, kolejki, leaderboardy, cache Prosty cache, duza skala odczytow

Ile kosztuje Amazon ElastiCache?

On-Demand

Placisz za godzine dzialania node. Cena zalezy od typu instancji (ilosc RAM i vCPU).

cache.t3.micro: ~$0.017/godz. (~$12.50/mies.)

Reserved Nodes

Rezerwujesz na 1-3 lata. Znaczace oszczednosci przy stalym obciazeniu.

cache.r6g.large Reserved 1 rok: do 33% taniej niz On-Demand

Serverless (Redis)

ElastiCache Serverless automatycznie skaluje pamiec i obliczenia. Placisz za zuzycie.

Dane: $0.125/GB/godz. Obliczenia: $0.0034/ECPU

Free Tier

ElastiCache oferuje Free Tier: 750 godzin cache.t3.micro miesiecznie przez 12 miesiecy.

Wystarczy na 1 node cache.t3.micro 24/7

Przyklady AWS CLI

Utworz klaster Redis

Tworzy nowy klaster ElastiCache z silnikiem Redis 7

aws elasticache create-replication-group \
 --replication-group-id moj-redis \
 --replication-group-description "Redis cache dla mojej aplikacji" \
 --engine redis \
 --engine-version 7.0 \
 --cache-node-type cache.t3.micro \
 --num-cache-clusters 2

Sprawdz status klastrow

Lista klastrow ElastiCache z ich stanem

aws elasticache describe-replication-groups \
 --query "ReplicationGroups[].{Nazwa:ReplicationGroupId,Status:Status,Engine:Engine,Nody:MemberClusters}" \
 --output table

Utworz klaster Memcached

Tworzy prosty klaster Memcached z 2 nodami

aws elasticache create-cache-cluster \
 --cache-cluster-id moj-memcached \
 --engine memcached \
 --cache-node-type cache.t3.micro \
 --num-cache-nodes 2

Sprawdz endpoint klastra

Pobiera endpoint do polaczenia z aplikacji

aws elasticache describe-replication-groups \
 --replication-group-id moj-redis \
 --query "ReplicationGroups[0].NodeGroups[0].PrimaryEndpoint" \
 --output json

Quiz: Amazon ElastiCache

Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.

Twoj wynik: 0 / 4

1. Jaka jest glowna roznica miedzy Redis a Memcached w ElastiCache?

2. Do czego sluzy TTL (Time To Live) w ElastiCache?

3. Ile replik odczytu moze miec Redis Replication Group?

4. Jaki typ danych Redis jest idealny do tablic wynikow (leaderboard)?

Chcesz poznac Amazon ElastiCache w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon ElastiCache krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy