Redis-caching og meddelelser (Pub/Sub, Streams) · Lektion

Implementering af grundlæggende cachemønstre

Lær at implementere mønstrene Cache-Aside og Write-Through med Redis til almindelige applikationsdata.

Lektion 2 af 411 trin

Implementering af grundlæggende cachemønstre er en gratis Redis-caching og meddelelser (Pub/Sub, Streams)-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Redis-caching og meddelelser (Pub/Sub, Streams), og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Redis-caching og meddelelser (Pub/Sub, Streams)-kurset indeholder 4 lektioner i alt.

Introduktion til grundlæggende cachemønstre

Velkommen! I denne lektion gennemgår vi to grundlæggende cachingmønstre: Cache-Aside og Write-Through. Disse mønstre hjælper dig med at integrere Redis i dine applikationer, så du kan gemme og hente data effektivt.

Det er afgørende at forstå dem for at bygge systemer, der reagerer hurtigt og kan skaleres.

Hvad er Cache-Aside?

Mønstret Cache-Aside er en af de mest almindelige måder at bruge en cache på. Her er din applikation ansvarlig for at administrere både cachen og det primære datalager (f.eks. en database).

  • Ved læsning af data kontrollerer appen først cachen.
  • Hvis dataene findes (et »cache hit«), returnerer den de cachede data.
  • Hvis de ikke findes (et »cache miss«), henter den dataene fra databasen, gemmer dem i cachen og returnerer dem derefter.

Cache-Aside: læseforløbet

Forestil dig, at din app har brug for brugerdata. Sådan fungerer Cache-Aside:

  1. Appen anmoder om data: Kontrollerer Redis for user:123.
  2. Cache-miss: Redis svarer »ikke fundet«.
  3. Appen forespørger databasen: Henter user:123 fra databasen.
  4. Appen opdaterer cachen: Gemmer user:123 i Redis.
  5. Appen returnerer data: Leverer dataene til brugeren.
  6. Efterfølgende forespørgsler: Nu har Redis user:123, hvilket giver et hurtigt »cache hit«!

Cache-Aside: CLI-eksempel

Lad os simulere et Cache-Aside-læseforløb ved hjælp af Redis CLI. Først prøver vi at hente en nøgle, der ikke findes i cachen (miss), derefter henter vi den fra en tænkt database og gemmer den. Til sidst henter vi den igen (hit).

DEL product:101
GET product:101

# Simulate fetching from DB: "Laptop X"
SET product:101 "Laptop X" EX 3600

GET product:101

Cache-Aside: fordele og ulemper

Fordele:

  • Enkelhed: Nem at implementere.
  • Læsetunge arbejdsbelastninger: Fremragende til data, der læses ofte, men sjældent ændres.
  • Dataaktualitet: Nye data føjes kun til cachen, når de efterspørges, hvilket reducerer cacheforurening.

Ulemper:

  • Indledende svartid: Den første læsning af data resulterer altid i et cache-miss, hvilket gør den langsommere.
  • Forældede data: Hvis databasen opdateres direkte, kan cachen indeholde gamle data, indtil de udløber eller ugyldiggøres eksplicit.

Hvad er Write-Through?

Write-Through-mønsteret sikrer, at data skrives til både cachen og det primære datalager (databasen) samtidig. Applikationen skriver til cachen, og cachen er ansvarlig for at skrive dataene til databasen.

  • Når data skrives, går de først til cachen.
  • Cachen skriver derefter straks dataene til databasen.
  • Skrivehandlingen betragtes først som fuldført, når begge handlinger lykkes.

Write-Through: Skriveforløbet

Forestil dig, at prisen på et produkt opdateres. Sådan fungerer Write-Through:

  1. Applikationen skriver data: Sender den nye produktpris for product:202 til Redis.
  2. Cachen skriver til databasen: Redis skriver straks den samme opdatering til databasen.
  3. Cachen bekræfter: Redis bekræfter skrivningen over for applikationen, først når skrivningen til databasen er fuldført.
  4. Applikationen fortsætter: Applikationen fortsætter, vel vidende at både cache og database er synkroniseret.

Write-Through: Eksempel med CLI

Ved Write-Through udfører din applikation typisk én skrivehandling til cachen, hvorefter cachen (eller et klientbibliotek, der implementerer mønsteret) håndterer lagringen i databasen. Her simulerer vi indstilling af en værdi, som konceptuelt også ville opdatere databasen.

SET user:456 '{"name": "Alice", "email": "alice@example.com"}'

# Conceptually, this SET command
# would trigger an update to your
# primary database as well.

GET user:456

Write-Through: Fordele og ulemper

Fordele:

  • Datakonsistens: Cache og database er altid synkroniserede.
  • Pålidelighed: Data gemmes med det samme.
  • Enklere læsninger: Alle læsninger er cache-hits (forudsat at data altid skrives via cachen).

Ulemper:

  • Skrivesvartid: Skrivninger er langsommere, fordi data skal skrives to gange (cache + database).
  • Cacheforurening: Data, der skrives til cachen, bliver måske aldrig læst, så der spildes cacheplads.
  • Øget belastning: Hver skrivehandling medfører en skrivning til databasen, hvilket potentielt øger belastningen på databasen.

Quiz: Sammenligning af mønstre

Du designer en funktion, hvor brugerprofiler læses ofte, men opdateres sjældnere. Hvilket cachemønster vil generelt være bedst egnet til at optimere læseydelsen og gøre implementeringen enklere?

Opsummering: Grundlæggende cachemønstre

Godt klaret! Du har lært om to grundlæggende cachestrategier:

  • Cache-Aside: Din applikation administrerer cachen. Ved læsninger tjekkes cachen først; ved et miss hentes data fra databasen, gemmes i cachen og returneres derefter. Bedst til læsetunge data.
  • Write-Through: Skrivninger går til cachen, som derefter straks skriver til databasen. Sikrer stærk konsistens mellem cache og database.

Disse mønstre danner grundlaget for mere avancerede cacheteknikker, som du udforsker i kommende lektioner!

Gratis at komme i gang

Lær Redis-caching og meddelelser (Pub/Sub, Streams) med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Implementering af grundlæggende cachemønstre” gratis?

Ja — alle 3 lektioner i læringssporet Redis-caching og meddelelser (Pub/Sub, Streams), inklusive “Implementering af grundlæggende cachemønstre”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Redis-caching og meddelelser (Pub/Sub, Streams)-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Implementering af grundlæggende cachemønstre”?

Lær at implementere mønstrene Cache-Aside og Write-Through med Redis til almindelige applikationsdata. Du øver dig i Redis-caching og meddelelser (Pub/Sub, Streams) med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Redis-caching og meddelelser (Pub/Sub, Streams)?

Der kræves ingen tidligere erfaring. Redis-caching og meddelelser (Pub/Sub, Streams) på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Implementering af grundlæggende cachemønstre”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Redis-caching og meddelelser (Pub/Sub, Streams)-lektion?

Ja. Alle Redis-caching og meddelelser (Pub/Sub, Streams)-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Hvorfor cache? Introduktion til caching
  2. Implementering af grundlæggende cachemønstre
  3. Cache-eviction og -udløb
  4. Forebyggelse af cache stampedes og thundering herds
← Tilbage til Redis-caching og meddelelser (Pub/Sub, Streams)