Cloud & IT Cert Prep · leksjon

Redis kontra Memcached: Velg riktig motor

Sammenlign Redis (persistens, replikering, sorterte mengder, pub/sub) med Memcached (enkelhet, flertråding), og velg basert på kravene til bruksområdet

Leksjon 1 av 413 trinn

Redis kontra Memcached: Velg riktig motor er en gratis leksjon i Cloud & IT Cert Prep på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cloud & IT Cert Prep, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva er Amazon ElastiCache

Amazon ElastiCache er en fullstendig administrert tjeneste for bufring i minnet, som gjør det enkelt å distribuere, administrere og skalere populære åpen kildekode-baserte datalagre i minnet i skyen. Den støtter to motorer: Redis og Memcached. Ved å levere data som ofte etterspørres, fra minnet i stedet for fra en database, kan ElastiCache redusere belastningen på databasen med flere størrelsesordener og redusere svartiden fra millisekunder til mikrosekunder. Valget mellom Redis og Memcached er et vanlig spørsmål på SAA-C03-eksamen.

Memcached: Ren enkelhet

Memcached er et distribuert nøkkel-verdi-lager i minnet, med fokus på enkelhet og horisontal skalerbarhet. Viktige egenskaper er: flertrådet (kan bruke alle CPU-kjerner på én node), enkel nøkkel-verdi-lagring (bare strenger, ingen komplekse datastrukturer), ingen persistent lagring (data går tapt når en node starter på nytt), ingen replikering (ingen standby eller replikaer) og horisontal sharding via konsistent hashing på klientsiden. Memcached er det riktige valget når De trenger en enkel cache i stor skala og ikke har behov for persistent lagring, komplekse datatyper eller høy tilgjengelighet.

# Create a Memcached cluster with 3 nodes
aws elasticache create-cache-cluster \
  --cache-cluster-id my-memcached \
  --engine memcached \
  --cache-node-type cache.r7g.large \
  --num-cache-nodes 3 \
  --cache-subnet-group-name my-subnet-group

# Memcached auto-discovers nodes via the config endpoint
# Application connects to: my-memcached.cfg.use1.cache.amazonaws.com:11211

Redis: Funksjonsrikt datalager i minnet

Redis (Remote Dictionary Server) er et funksjonsrikt datalager i minnet, med én tråd per instans, som støtter strenger, hasher, lister, mengder, sorterte mengder, punktgrafikk, HyperLogLogs, strømmer og geospatiale indekser. Viktige fordeler sammenlignet med Memcached er: valgfri persistent lagring (AOF- og RDB-øyeblikksbilder), replikering (lesereplikaer og automatisk failover), pub/sub-meldinger, Lua-skript, transaksjoner (MULTI/EXEC) og Cluster Mode for horisontal sharding. Redis er det riktige valget i de fleste praktiske scenarier for bufring.

# Redis data structure examples

# String
# SET user:1:name 'Alice'
# GET user:1:name

# Hash (object-like)
# HSET product:42 name 'Widget' price '9.99' stock '100'
# HGETALL product:42

# Sorted set (leaderboard)
# ZADD leaderboard 9500 'alice' 8700 'bob' 9100 'carol'
# ZREVRANGE leaderboard 0 2 WITHSCORES

# Pub/Sub
# PUBLISH notifications 'order_shipped:12345'
# SUBSCRIBE notifications

Redis-persistent lagring: AOF og RDB

Redis støtter to mekanismer for persistent lagring: RDB (Redis Database) — periodiske øyeblikksbilder på et bestemt tidspunkt som lagres på disk med konfigurerbare intervaller (rask omstart, men data mellom øyeblikksbildene kan gå tapt). AOF (Append-Only File) — logger hver skriveoperasjon. Ved omstart spiller Redis av loggen for å gjenoppbygge tilstanden (bedre databeskyttelse, men større filer og langsommere omstarter). I ElastiCache kan De aktivere AOF for å bevare data gjennom omstarter av noder. Dette er avgjørende når ElastiCache brukes ikke bare som cache, men som primært datalager, for eksempel for øktdata.

# Create an ElastiCache Redis cluster with AOF enabled
aws elasticache create-replication-group \
  --replication-group-id my-redis \
  --replication-group-description 'Redis with persistence' \
  --cache-node-type cache.r7g.large \
  --engine redis \
  --num-cache-clusters 2 \
  --cache-parameter-group-name default.redis7 \
  --snapshot-retention-limit 5

# Note: Enable AOF via parameter group: appendonly=yes

Redis-replikering og automatisk failover

Redis støtter replikeringsgrupper med én primærnode som håndterer alle skriveoperasjoner, og opptil 5 lesereplikaer som håndterer lesinger. Når Multi-AZ og automatisk failover er aktivert, gjør ElastiCache automatisk en lesereplika til primærnode når primærnoden svikter — failoveren er vanligvis fullført på under 60 sekunder. Dette gir Redis-baserte applikasjoner høy tilgjengelighet som Memcached ikke kan tilby (Memcached har ingen replikering). For produksjonsapplikasjoner som krever caching med høy tilgjengelighet, bør De alltid bruke Redis med automatisk failover.

# Create a Redis replication group with Multi-AZ failover
aws elasticache create-replication-group \
  --replication-group-id prod-redis \
  --description 'Production Redis with HA' \
  --cache-node-type cache.r7g.xlarge \
  --engine redis \
  --multi-az-enabled \
  --automatic-failover-enabled \
  --num-cache-clusters 3 \
  --cache-subnet-group-name multi-az-subnet-group

# 1 primary + 2 replicas across 3 AZs

Redis-sorterte mengder for ledertavler

Sorterte mengder er en av Redis' mest kraftige datastrukturer. Hvert medlem har en tilknyttet flyttallsscore, og medlemmene holdes alltid sortert. Dette gjør sorterte mengder ideelle for ledertavler (rangering etter score), prioritetskøer (behandle jobber med høyest prioritet først) og hastighetsbegrensning (glidende vindu med tidsstempler som scorer). Operasjonene ZADD, ZRANGE, ZREVRANGE, ZRANK og ZRANGEBYSCORE har alle kompleksiteten O(log n) — svært effektivt, selv for millioner av oppføringer.

# Leaderboard operations using Redis sorted sets

# Add/update scores
# ZADD game:leaderboard 10500 'player:alice'
# ZADD game:leaderboard 9800  'player:bob'
# ZADD game:leaderboard 11200 'player:carol'

# Get top 3 players (highest scores first)
# ZREVRANGE game:leaderboard 0 2 WITHSCORES
# Result: carol 11200, alice 10500, bob 9800

# Get a player's rank (0-indexed)
# ZREVRANK game:leaderboard 'player:alice'
# Result: 1 (second place)

Redis-pub/sub for meldinger

Redis pub/sub gjør det mulig for utgivere å kringkaste meldinger til kanaler uten å vite hvem som abonnerer. Abonnenter mottar alle meldinger som publiseres til kanalene de abonnerer på, i sanntid. Pub/sub-meldinger lagres ikke persistent — hvis en abonnent er frakoblet, går meldingen tapt. For persistent meldingsutveksling med garantert levering kan De bruke Redis Streams (en mer robust datastruktur som ble lagt til i Redis 5) eller en spesialisert meldingstjeneste som SQS eller SNS. På SAA-C03-eksamen er Redis pub/sub et alternativ for lette sanntidsvarsler mellom tjenester.

# Publisher side (broadcasts to 'notifications' channel)
# PUBLISH notifications '{"type":"order_shipped","orderId":"12345"}'

# Subscriber side (listens for messages)
# SUBSCRIBE notifications

# Pattern subscribe (wildcard channel matching)
# PSUBSCRIBE order:*
# Receives messages from: order:created, order:shipped, order:delivered

# Note: Unlike SQS, pub/sub is fire-and-forget — no acknowledgement

Memcached kontra Redis: Beslutningstabell

Bruk dette rammeverket når De skal velge løsning til SAA-C03-eksamen: Velg Memcached når De trenger: en enkel cache uten krav om høy tilgjengelighet, flertrådet ytelse og horisontal skalering ved å legge til noder (ren cache). Velg Redis når De trenger: persistent lagring (øktlager), replikering og failover (høy tilgjengelighet), komplekse datatyper (sorterte mengder for ledertavler, mengder, lister), pub/sub, Lua-transaksjoner eller Cluster Mode for horisontal skalering med flere shards. Hvis eksamensoppgaven nevner en funksjon utover enkel nøkkel-verdi-bufring, er Redis nesten alltid svaret.

Typer og familier av cache-noder

ElastiCache tilbyr flere familier av nodetyper: r7g (Graviton 3, minneoptimalisert — best forhold mellom pris og ytelse, anbefalt for de fleste cache-løsninger), m7g (balansert beregning og minne) og t4g (burstable, lav kostnad for utvikling og testing). Nodestørrelsene varierer fra cache.t4g.micro (500 MB) til cache.r7g.16xlarge (425 GB). I produksjon bør De velge en nodestørrelse som holder datasettet i minnet med 20–25 % margin. Hvis minnet tar slutt, oppstår utkastinger (Memcached) eller OOM-feil (Redis).

# Get available cache node types
aws elasticache describe-cache-engine-versions \
  --engine redis \
  --query 'CacheEngineVersions[?contains(EngineVersion, '7')].{Engine:Engine,Version:EngineVersion}'

# Check memory and vCPU for a node type
aws elasticache describe-cache-engine-versions \
  --cache-parameter-group-family redis7

# Monitor evictions to detect memory pressure
# CloudWatch: Evictions metric > 0 means cache is full

ElastiCache-sikkerhet

ElastiCache distribueres i VPC-en Deres, med sikkerhetsgrupper som kontrollerer tilgangen — ingen tilgang fra det offentlige internett som standard. For Redis bør De aktivere AUTH-tokens (et passord som klientene må oppgi) og kryptering under overføring (TLS) for tilkoblinger, samt kryptering i ro ved hjelp av KMS. For Memcached er bare TLS-kryptering under overføring tilgjengelig (ingen kryptering i ro eller AUTH). Ved migrering fra ukryptert til kryptert Redis finnes det ingen migrering på stedet — De må opprette en ny kryptert klynge og varme den opp.

# Create a Redis cluster with TLS and AUTH token
aws elasticache create-replication-group \
  --replication-group-id secure-redis \
  --description 'Encrypted Redis' \
  --cache-node-type cache.r7g.large \
  --engine redis \
  --transit-encryption-enabled \
  --at-rest-encryption-enabled \
  --auth-token 'MySecretPassword123!'

# Store the AUTH token in Secrets Manager, not in your app code

Utkastingspolicyer

Når en Redis- eller Memcached-cache er full, avgjør utkastingspolicyen hvilke nøkler som fjernes for å frigjøre plass. Vanlige utkastingspolicyer i Redis er: noeviction (returnerer en OOM-feil — bra når cachen er det primære datalageret), allkeys-lru (fjerner den sist brukte nøkkelen blant alle nøkler — bra for generell caching), volatile-lru (LRU blant nøkler med angitt TTL — bevarer nøkler som ikke utløper), allkeys-random (tilfeldig utkasting) og allkeys-lfu (fjerner den minst brukte nøkkelen). For typiske bruksområder for caching anbefales allkeys-lru eller allkeys-lfu.

# Set eviction policy via parameter group
aws elasticache create-cache-parameter-group \
  --cache-parameter-group-name redis7-lru \
  --cache-parameter-group-family redis7 \
  --description 'LRU eviction policy'

aws elasticache modify-cache-parameter-group \
  --cache-parameter-group-name redis7-lru \
  --parameter-name-values ParameterName=maxmemory-policy,ParameterValue=allkeys-lru

# Apply the parameter group to your cluster:
aws elasticache modify-replication-group \
  --replication-group-id prod-redis \
  --cache-parameter-group-name redis7-lru

Hurtigsjekk

Test forståelsen Deres av AWS Solutions Architect-konsepter (SAA-C03) fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen har De lært at Memcached er enkelt, flertrådet og ikke har høy tilgjengelighet — best for ren horisontal skalering av enkle cacher, at Redis støtter komplekse datastrukturer, persistent lagring, pub/sub og Multi-AZ-failover — best for de fleste produksjonsscenarier for caching, og at sorterte mengder gjør Redis til det naturlige valget for ledertavler og prioritetskøer. Neste tema er Redis-replikeringsgrupper og Cluster Mode for horisontal sharding.

Gratis å komme i gang

Lær deg Cloud & IT Cert Prep med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
150
Leksjoner
600

Ofte stilte spørsmål

Er leksjonen «Redis kontra Memcached: Velg riktig motor» gratis?

Ja – hele teksten i «Redis kontra Memcached: Velg riktig motor» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cloud & IT Cert Prep-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva lærer jeg i «Redis kontra Memcached: Velg riktig motor»?

Sammenlign Redis (persistens, replikering, sorterte mengder, pub/sub) med Memcached (enkelhet, flertråding), og velg basert på kravene til bruksområdet Du øver på Cloud & IT Cert Prep med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Cloud & IT Cert Prep?

Ingen tidligere erfaring er nødvendig. Cloud & IT Cert Prep på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Redis kontra Memcached: Velg riktig motor»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Cloud & IT Cert Prep-leksjonen?

Ja. Alle Cloud & IT Cert Prep-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Redis kontra Memcached: Velg riktig motor
  2. ElastiCache Redis-replikeringsgrupper og klyngemodus
  3. Bufringsstrategier: Lazy Loading og Write-Through
  4. Øktlagring og mønstre for ledertavler
← Tilbake til Cloud & IT Cert Prep