0Pricing
C# Academy · Lektion

Cache-Muster und Ablauf

Verwenden Sie Cache-Aside und legen Sie Ablaufzeiten fest.

Cache-Muster und Ablauf ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Caching-Muster

Die Art und Weise, wie Sie einen Cache lesen und beschreiben, wird als Pattern bezeichnet. Das häufigste Muster in Webanwendungen ist Cache-aside, bei dem Ihr Code den Cache rund um die Datenquelle verwaltet.

Das Cache-aside-Muster

Cache-aside, auch Lazy Loading genannt, funktioniert in drei Schritten: Prüfen Sie den Cache; laden Sie bei einem Cache-Miss die Daten aus der Quelle und befüllen Sie den Cache; geben Sie den Wert zurück. Der Cache wird bei Bedarf gefüllt.

async Task<string> GetForecastAsync(string city)
{
    string key = $"forecast:{city}";
    string cached = await _cache.GetStringAsync(key);
    if (cached is not null) return cached;

    string fresh = await _api.LoadForecastAsync(city);
    await _cache.SetStringAsync(key, fresh);
    return fresh;
}

Warum Ablaufzeiten unverzichtbar sind

Gecachte Daten können veralten. Eine Ablaufzeit entfernt Einträge automatisch nach einem bestimmten Zeitraum, sodass der nächste Lesevorgang aktuelle Daten lädt. Dadurch werden Performance und Aktualität gegeneinander abgewogen.

Absolute Ablaufzeit

Eine absolute Ablaufzeit entfernt einen Eintrag unabhängig von seiner Nutzung zu einem festgelegten Zeitpunkt. Verwenden Sie sie, wenn Daten nur innerhalb eines bekannten Zeitfensters gültig sind.

var options = new DistributedCacheEntryOptions
{
    AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10)
};

Gleitende Ablaufzeit

Eine gleitende Ablaufzeit setzt den Timer bei jedem Zugriff zurück. Ein Eintrag bleibt erhalten, solange er regelmäßig verwendet wird, wird aber nach einer Phase der Inaktivität entfernt. Das eignet sich besonders gut für sitzungsähnliche Daten.

var options = new DistributedCacheEntryOptions
{
    SlidingExpiration = TimeSpan.FromMinutes(5)
};

Beides kombinieren

Sie können beide Optionen setzen: Eine gleitende Ablaufzeit hält häufig verwendete Daten verfügbar, während eine absolute Obergrenze sicherstellt, dass ein Eintrag nie länger als einen maximalen Zeitraum bestehen bleibt und schließlich aktualisiert werden muss.

var options = new DistributedCacheEntryOptions
{
    SlidingExpiration = TimeSpan.FromMinutes(5),
    AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(1)
};

Optionen beim Speichern anwenden

Übergeben Sie die Optionen als drittes Argument an SetStringAsync oder SetAsync, damit der Eintrag seine eigene Ablaufregel erhält.

await _cache.SetStringAsync(key, fresh, options);

Write-through und Invalidierung

Wenn sich die Quelldaten ändern, entfernen oder aktualisieren Sie den Cache, damit Lesevorgänge keine veralteten Werte liefern. Cache-aside wird typischerweise mit einem RemoveAsync für den betroffenen Schlüssel kombiniert.

await _repository.UpdateForecastAsync(city, value);
await _cache.RemoveAsync($"forecast:{city}");

Eine Cache Stampede vermeiden

Wenn ein häufig verwendeter Schlüssel abläuft, laden ihn möglicherweise viele Anfragen gleichzeitig neu. Das wird als Cache Stampede bezeichnet. Sie können dies durch kurze Sperren, leicht zufällig verteilte Ablaufzeiten oder eine Aktualisierung im Hintergrund abmildern, sodass nur eine Anfrage den Eintrag neu aufbaut.

Ablaufzeiten auswählen

Wählen Sie die Dauer danach aus, wie häufig sich die Daten ändern und wie viel Veraltung akzeptabel ist. Referenzdaten vertragen lange TTLs; Daten mit häufigen Änderungen benötigen kurze TTLs oder eine ereignisbasierte Invalidierung.

Die Kosten eines Cache-Misses

Jeder Cache-Miss verursacht einen Ladevorgang aus der Quelle. Entwerfen Sie Schlüssel und TTLs daher so, dass die Trefferquote möglichst hoch ist. Überwachen Sie Treffer- und Miss-Verhältnisse, um Ihren Cache im Laufe der Zeit zu optimieren.

Kurze Überprüfung

Testen Sie Caching-Muster und Ablaufzeiten.

Zusammenfassung

Das Cache-aside-Muster prüft den Cache, lädt Daten bei einem Cache-Miss und befüllt anschließend den Cache. Die absolute Ablaufzeit entfernt einen Eintrag zu einem festgelegten Zeitpunkt; die gleitende Ablaufzeit setzt sich bei jedem Zugriff zurück. Kombinieren Sie beide mit DistributedCacheEntryOptions. Invalidieren Sie den Cache bei Schreibvorgängen mit RemoveAsync, schützen Sie sich vor Cache Stampedes und stimmen Sie TTLs und Schlüssel auf Zugriffsmuster und akzeptable Veraltung ab.

Häufig gestellte Fragen

Ist die Lektion „Cache-Muster und Ablauf“ kostenlos?

Ja — der vollständige Text von „Cache-Muster und Ablauf“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Cache-Muster und Ablauf“?

Verwenden Sie Cache-Aside und legen Sie Ablaufzeiten fest. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Cache-Muster und Ablauf“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. IDistributedCache-Abstraktion
  2. Mit Redis verbinden
  3. Cache-Muster und Ablauf
  4. Serialisierte Objekte cachen
← Zurück zu C# Academy