Cache-strategier: Redis + CDN + edge computing · Lektion

Redis-datastrukturer för cachning

Utforska hur Redis-datastrukturer som strängar, hash-tabeller och sorterade mängder effektivt kan användas i olika cachningsscenarier.

Lektion 2 av 411 steg

Redis-datastrukturer för cachning är en gratis lektion i Cache-strategier: Redis + CDN + edge computing på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cache-strategier: Redis + CDN + edge computing, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cache-strategier: Redis + CDN + edge computing innehåller totalt 4 lektioner.

Redis datastrukturer för cachning

Redis är inte bara ett enkelt nyckel-värdelager! Det erbjuder flera kraftfulla datastrukturer, som var och en är optimerad för olika datatyper och cachningsscenarier.

Att förstå dessa strukturer är viktigt för att utforma effektiva och flexibla cachningslösningar. Ni får lära er när ni ska använda strängar, hash-tabeller och sorterade mängder för att lagra programmets data.

Strängar för grundläggande cachning

Den enklaste Redis-datatypen är en sträng. Den passar perfekt för att cacha enkla nyckel-värdepar, till exempel en användares sessionstoken, en sidas HTML-innehåll eller en enkel räknare.

Tänk på den som en ordlista där nycklar direkt kopplas till ett enda värde. Den är snabb och enkel att använda för vanliga cachningsbehov.

  • SET key value: Lagrar ett strängvärde.
  • GET key: Hämtar ett strängvärde.
  • DEL key: Tar bort en nyckel och dess värde.

Cacha användarens sessionsdata

Så här kan ni cacha tidpunkten för en användares senaste inloggning med en Redis-sträng. Kör koden för att se hur det fungerar!

import redis
import time

r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)

def main():
    user_id = "user:123"
    last_login_key = f"{user_id}:last_login"
    current_time = int(time.time())

    # Cache the current login time
    r.set(last_login_key, current_time)
    print(f"Cached last login for {user_id}: {current_time}")

    # Retrieve the cached login time
    cached_login = r.get(last_login_key)
    print(f"Retrieved cached last login: {cached_login}")

    # Clean up (optional)
    # r.delete(last_login_key)

if __name__ == "__main__":
    main()

Hash-tabeller för objektcachning

När ni behöver cacha strukturerade data, till exempel en hel användarprofil eller produktinformation, är hash-tabeller idealiska. De låter er lagra flera fält-värdepar under en enda nyckel.

Detta är effektivare än att använda separata strängnycklar för varje attribut i ett objekt, eftersom relaterade data grupperas logiskt.

  • HSET key field value [field value ...]: Anger flera fält och värden i en hash-tabell.
  • HGETALL key: Hämtar alla fält och värden från en hash-tabell.
  • HGET key field: Hämtar värdet för ett specifikt fält.

Cacha produktinformation

Låt oss cacha information om en produkt, till exempel dess namn, pris och lagersaldo. Kör koden för att se hur hash-tabeller lagrar strukturerade data.

import redis

r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)

def main():
    product_id = "product:456"
    
    # Cache product details as a Hash
    r.hset(product_id, mapping={
        "name": "Wireless Headphones",
        "price": "99.99",
        "stock": "500"
    })
    print(f"Cached product details for {product_id}")

    # Retrieve all product details
    product_details = r.hgetall(product_id)
    print(f"Retrieved product details: {product_details}")

    # Retrieve a specific field
    product_name = r.hget(product_id, "name")
    print(f"Retrieved product name: {product_name}")

    # Clean up (optional)
    # r.delete(product_id)

if __name__ == "__main__":
    main()

Sorterade mängder: Rangordnade och tidsbaserade data

Sorterade mängder är unika eftersom varje medlem har ett tillhörande poängvärde, vilket gör att Redis kan hålla elementen sorterade. Det passar perfekt för att cacha topplistor, nyligen visade objekt (baserat på tidsstämpel) eller objekt som rangordnas efter popularitet.

De kombinerar mängders unika element med möjligheten att ordna elementen. Ni kan hämta intervall av objekt efter poäng eller rangordning.

  • ZADD key score member [score member ...]: Lägger till medlemmar med poängvärden.
  • ZRANGE key start stop [WITHSCORES]: Hämtar medlemmar efter index (rangordning).
  • ZRANGEBYSCORE key min max [WITHSCORES]: Hämtar medlemmar inom ett poängintervall.

Cacha en topplista i ett spel

Föreställ er att ni cachar ett spels högsta poäng. Sorterade mängder gör detta enkelt! Poängen för varje medlem avgör dess rangordning. Kör exemplet.

import redis

r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)

def main():
    leaderboard_key = "game:leaderboard"

    # Add players and their scores to the leaderboard
    r.zadd(leaderboard_key, {"Alice": 1500, "Bob": 1200, "Charlie": 1800, "David": 1500})
    print("Added players to leaderboard.")

    # Retrieve the top 3 players (highest score first)
    # ZREVRANGE is used for descending order by score
    top_players = r.zrevrange(leaderboard_key, 0, 2, withscores=True)
    print("Top 3 players:")
    for player, score in top_players:
        print(f"- {player}: {int(score)}") # scores are float by default

    # Clean up (optional)
    # r.delete(leaderboard_key)

if __name__ == "__main__":
    main()

Viktigt: När cachen löper ut (TTL)

För alla cachade data är det viktigt att ange en utgångstid (Time To Live - TTL). Det förhindrar inaktuella data och hanterar minnesanvändningen.

Redis tar automatiskt bort nycklar när deras TTL löper ut, så att cachen förblir aktuell och inte växer utan begränsning.

  • EXPIRE key seconds: Anger en TTL för en befintlig nyckel.
  • SETEX key seconds value: Anger en nyckel med ett värde och en TTL i samma kommando.
  • TTL key: Kontrollerar återstående TTL.

När ska ni använda vilken struktur?

Valet av datastruktur beror på era cachningsbehov:

  • Strängar: För enkla, atomiska nyckel-värdepar (t.ex. enskilda värden, räknare och renderade HTML-fragment).
  • Hash-tabeller: För att cacha hela objekt eller poster med flera fält (t.ex. användarprofiler och produktegenskaper).
  • Sorterade mängder: För ordnade listor, rangordningar, topplistor eller tidsseriedata där elementen behöver poängvärden för sortering.

Tänk alltid på hur ni ska komma åt och hantera data.

Utmaning: Cachningsscenario

Ni behöver cacha följande två datatyper för en app för sociala medier:

  1. Det aktuella antalet gilla-markeringar för ett specifikt inlägg.
  2. En lista över de 10 senaste kommentarerna till inlägget, sorterade efter tidsstämpel.

Vilka Redis-datastrukturer passar bäst för respektive datatyp?

Sammanfattning av Redis datastrukturer

Bra jobbat! Ni har utforskat Redis viktigaste datastrukturer och deras användningsområden inom cachning:

  • Strängar för enkla nyckel-värdepar.
  • Hash-tabeller för strukturerade objekt.
  • Sorterade mängder för ordnade listor med poängvärden.

Ni har också lärt er hur viktigt TTL är för att hålla cachen aktuell.

I nästa lektion går vi igenom grundläggande Redis-operationer för cachning och använder dessa strukturer i praktiken!

Gratis att börja

Lär dig Cache-strategier: Redis + CDN + edge computing med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Redis-datastrukturer för cachning” gratis?

Ja – hela texten till ”Redis-datastrukturer för cachning” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cache-strategier: Redis + CDN + edge computing, kan Ni uppgradera till CoddyKit PRO. Kursen i Cache-strategier: Redis + CDN + edge computing innehåller totalt 4 lektioner.

Vad lär jag mig i ”Redis-datastrukturer för cachning”?

Utforska hur Redis-datastrukturer som strängar, hash-tabeller och sorterade mängder effektivt kan användas i olika cachningsscenarier. Ni övar på Cache-strategier: Redis + CDN + edge computing med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cache-strategier: Redis + CDN + edge computing?

Du behöver inga förkunskaper. Utbildningen i Cache-strategier: Redis + CDN + edge computing på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Redis-datastrukturer för cachning”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cache-strategier: Redis + CDN + edge computing-lektionen?

Ja. Varje Cache-strategier: Redis + CDN + edge computing-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Introduktion till Redis-cachning
  2. Redis-datastrukturer för cachning
  3. Grundläggande Redis-cacheoperationer
  4. TTL och utgång i Redis
← Tillbaka till Cache-strategier: Redis + CDN + edge computing