Cachingstrategieën: Redis + CDN + edgecomputing · Les

Redis-datastructuren voor caching

Ontdek hoe Redis-datastructuren zoals strings, hashes en gesorteerde sets effectief kunnen worden gebruikt voor verschillende cachingscenario's.

Les 2 van 411 stappen

Redis-datastructuren voor caching is een gratis Cachingstrategieën: Redis + CDN + edgecomputing-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Cachingstrategieën: Redis + CDN + edgecomputing. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Cachingstrategieën: Redis + CDN + edgecomputing bevat in totaal 4 lessen.

Gegevensstructuren van Redis voor caching

Redis is niet alleen een eenvoudig sleutel-waardearchief! Het biedt verschillende krachtige gegevensstructuren, die elk zijn geoptimaliseerd voor verschillende typen gegevens en cachescenario's.

Als je deze structuren begrijpt, kun je efficiënte en flexibele cachingoplossingen ontwerpen. Je leert wanneer je tekenreeksen, hashes en gesorteerde verzamelingen gebruikt om de gegevens van je toepassing op te slaan.

Tekenreeksen voor eenvoudige caching

Het eenvoudigste gegevenstype van Redis is een tekenreeks. Die is ideaal voor het cachen van eenvoudige sleutel-waardeparen, zoals het sessietoken van een gebruiker, de HTML-inhoud van een pagina of een eenvoudige teller.

Je kunt het zien als een woordenboek waarin sleutels rechtstreeks aan één waarde worden gekoppeld. Het is snel en eenvoudig voor veelvoorkomende cachingbehoeften.

  • SET key value: Slaat een tekenreekswaarde op.
  • GET key: Haalt een tekenreekswaarde op.
  • DEL key: Verwijdert een sleutel en de bijbehorende waarde.

Sess gegevens van gebruikers cachen

Zo kun je het tijdstip van de laatste aanmelding van een gebruiker cachen met een Redis-tekenreeks. Voer deze code uit om te zien hoe dit werkt!

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()

Hashes voor het cachen van objecten

Wanneer je gestructureerde gegevens wilt cachen, zoals een volledig gebruikersprofiel of productgegevens, zijn hashes ideaal. Hiermee kun je meerdere veld-waardeparen onder één sleutel opslaan.

Dit is efficiënter dan afzonderlijke tekenreekssleutels voor elk kenmerk van een object te gebruiken, omdat gerelateerde gegevens logisch worden gegroepeerd.

  • HSET key field value [field value ...]: Stelt meerdere velden en waarden in een hash in.
  • HGETALL key: Haalt alle velden en waarden uit een hash op.
  • HGET key field: Haalt de waarde van een specifiek veld op.

Productinformatie cachen

Laten we de gegevens van een product cachen, zoals de naam, prijs en voorraad. Voer deze code uit om te zien hoe hashes gestructureerde gegevens opslaan.

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()

Gesorteerde verzamelingen: gerangschikte en getimede gegevens

Gesorteerde verzamelingen zijn uniek omdat elk lid een bijbehorende score heeft, waardoor Redis de elementen gesorteerd kan houden. Dit is ideaal voor het cachen van ranglijsten, recent bekeken items (op basis van tijdstempel) of items die op populariteit zijn gerangschikt.

Ze combineren de uniciteit van verzamelingen met de mogelijkheid om elementen te ordenen. Je kunt bereiken van items ophalen op basis van score of rang.

  • ZADD key score member [score member ...]: Voegt leden met scores toe.
  • ZRANGE key start stop [WITHSCORES]: Haalt leden op basis van index (rang) op.
  • ZRANGEBYSCORE key min max [WITHSCORES]: Haalt leden binnen een scorebereik op.

Een ranglijst van een game cachen

Stel je voor dat je de topscores van een game cacht. Met gesorteerde verzamelingen is dat eenvoudig! De 'score' van elk lid bepaalt de rang. Voer het voorbeeld uit.

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()

Essentieel: verlopen van de cache (TTL)

Voor alle gegevens in de cache is het instellen van een verlooptijd (levensduur - TTL) essentieel. Dit voorkomt verouderde gegevens en beperkt het geheugengebruik.

Redis verwijdert sleutels automatisch zodra hun TTL verloopt. Zo blijft je cache actueel en groeit deze niet onbeperkt.

  • EXPIRE key seconds: Stelt een TTL in voor een bestaande sleutel.
  • SETEX key seconds value: Stelt in één opdracht een sleutel met een waarde en een TTL in.
  • TTL key: Controleert de resterende TTL.

Welke structuur gebruik je wanneer?

De keuze van de juiste gegevensstructuur hangt af van je cachingbehoeften:

  • Tekenreeksen: Voor eenvoudige, atomaire sleutel-waardeparen (bijvoorbeeld afzonderlijke waarden, tellers en gegenereerde HTML-fragmenten).
  • Hashes: Voor het cachen van volledige objecten of records met meerdere velden (bijvoorbeeld gebruikersprofielen en productkenmerken).
  • Gesorteerde verzamelingen: Voor geordende lijsten, rangschikkingen, ranglijsten of tijdreeksgegevens waarbij elementen scores nodig hebben om te kunnen worden gesorteerd.

Denk altijd na over hoe je de gegevens gaat benaderen en beheren.

Uitdaging: een cachescenario

Je moet de volgende twee typen gegevens cachen voor een toepassing voor sociale media:

  1. Het huidige aantal vind-ik-leuks van een specifiek bericht.
  2. Een lijst met de 10 meest recente reacties op dat bericht, gesorteerd op tijdstempel.

Welke gegevensstructuren van Redis zijn voor elk type het meest geschikt?

Samenvatting van de gegevensstructuren van Redis

Goed gedaan! Je hebt de belangrijkste gegevensstructuren van Redis en hun toepassingen voor caching verkend:

  • Tekenreeksen voor eenvoudige sleutel-waardeparen.
  • Hashes voor gestructureerde objecten.
  • Gesorteerde verzamelingen voor geordende lijsten met scores.

Je hebt ook geleerd hoe belangrijk TTL is om de actualiteit van de cache te beheren.

In de volgende les duiken we in de basisbewerkingen van een Redis-cache en gebruiken we deze structuren in de praktijk!

Gratis beginnen

Leer Cachingstrategieën: Redis + CDN + edgecomputing met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Redis-datastructuren voor caching” gratis?

Ja — de volledige tekst van “Redis-datastructuren voor caching” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Cachingstrategieën: Redis + CDN + edgecomputing wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Cachingstrategieën: Redis + CDN + edgecomputing bevat in totaal 4 lessen.

Wat leer ik in “Redis-datastructuren voor caching”?

Ontdek hoe Redis-datastructuren zoals strings, hashes en gesorteerde sets effectief kunnen worden gebruikt voor verschillende cachingscenario's. Je oefent met Cachingstrategieën: Redis + CDN + edgecomputing door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Cachingstrategieën: Redis + CDN + edgecomputing te beginnen?

Ervaring vooraf is niet nodig. Cachingstrategieën: Redis + CDN + edgecomputing op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Redis-datastructuren voor caching”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Cachingstrategieën: Redis + CDN + edgecomputing?

Ja. Elke les over Cachingstrategieën: Redis + CDN + edgecomputing bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Inleiding tot caching met Redis
  2. Redis-datastructuren voor caching
  3. Basisbewerkingen voor Redis-cache
  4. TTL en expiratie in Redis
← Terug naar Cachingstrategieën: Redis + CDN + edgecomputing