0Pricing
C# Academy · Lektion

Serialisierte Objekte cachen

Speichern und laden Sie komplexe Objekte.

Serialisierte Objekte cachen ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.

Mehr als Strings cachen

In echten Anwendungen werden Objekte gecacht, nicht nur Strings. Da IDistributedCache Bytes speichert, müssen Sie Ihr Objekt in eine Byte- oder Stringdarstellung serialisieren und beim Auslesen wieder deserialisieren. JSON ist dafür die übliche Wahl.

Mit System.Text.Json serialisieren

Verwenden Sie System.Text.Json, um ein Objekt in einen JSON-String umzuwandeln, und speichern Sie ihn anschließend mit SetStringAsync.

using System.Text.Json;

var product = new Product { Id = 1, Name = "Coffee", Price = 4.5m };
string json = JsonSerializer.Serialize(product);
await _cache.SetStringAsync("product:1", json);

Beim Lesen deserialisieren

Lesen Sie den JSON-String aus dem Cache und deserialisieren Sie ihn wieder in Ihren Typ. Denken Sie daran, den null-Wert bei einem Cache-Miss zu behandeln.

string json = await _cache.GetStringAsync("product:1");
if (json is null) return null;
Product product = JsonSerializer.Deserialize<Product>(json);

Eine wiederverwendbare generische Hilfsmethode

Kapseln Sie die Serialisierungs- und Deserialisierungslogik in Erweiterungsmethoden, damit Aufrufer jeden Typ problemlos cachen können.

public static async Task SetAsync<T>(
    this IDistributedCache cache, string key, T value,
    DistributedCacheEntryOptions options)
{
    string json = JsonSerializer.Serialize(value);
    await cache.SetStringAsync(key, json, options);
}

Die generische Get-Hilfsmethode

Die passende Get-Methode deserialisiert den Wert zurück in T und gibt bei einem Cache-Miss default zurück.

public static async Task<T> GetAsync<T>(
    this IDistributedCache cache, string key)
{
    string json = await cache.GetStringAsync(key);
    return json is null ? default : JsonSerializer.Deserialize<T>(json);
}

Ein GetOrCreate-Muster

Kombinieren Sie Cache-aside und Serialisierung in einer Hilfsmethode: Geben Sie das gecachte Objekt zurück oder führen Sie eine Factory aus, cachen Sie deren Ergebnis und geben Sie es zurück.

public static async Task<T> GetOrCreateAsync<T>(
    this IDistributedCache cache, string key,
    Func<Task<T>> factory, DistributedCacheEntryOptions options)
{
    var existing = await cache.GetAsync<T>(key);
    if (existing is not null) return existing;
    var created = await factory();
    await cache.SetAsync(key, created, options);
    return created;
}

GetOrCreate verwenden

Die Aufrufstelle wird zu einem Einzeiler, der die gesamte Caching-Mechanik verbirgt.

var product = await _cache.GetOrCreateAsync(
    "product:1",
    () => _repository.LoadProductAsync(1),
    new DistributedCacheEntryOptions
    {
        AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(15)
    });

Optionen für den Serializer

Verwenden Sie eine einzige Instanz von JsonSerializerOptions wieder, zum Beispiel für camelCase oder das Ignorieren von Nullwerten. So bleiben gecachte Nutzdaten konsistent und kompakt, und Sie vermeiden die wiederholte Erstellung von Optionen.

private static readonly JsonSerializerOptions JsonOptions = new()
{
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
    DefaultIgnoreCondition =
        System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull
};

Die Struktur gecachter Daten versionieren

Wenn sich die Struktur eines gecachten Typs ändert, kann die Deserialisierung alter JSON-Daten fehlschlagen. Fügen Sie einen Versionsabschnitt in den Schlüssel ein, zum Beispiel product:v2:1, damit eine Bereitstellung inkompatible Einträge automatisch umgeht.

Nutzdaten schlank halten

Cache-nur die benötigten Felder. Kleinere Nutzdaten verringern den Netzwerk- und Speicherbedarf in Redis und beschleunigen die Serialisierung bei jedem Lese- und Schreibvorgang.

Serialisierungskosten berücksichtigen

Serialisierung ist nicht kostenlos. Ziehen Sie für sehr häufig verwendete Pfade kompakte Formate oder das Cachen bereits gerenderter Ergebnisse in Betracht. Messen Sie immer, um zu bestätigen, dass der Cache insgesamt einen Vorteil bringt.

Kurze Überprüfung

Testen Sie das Caching serialisierter Objekte.

Zusammenfassung

Um Objekte zu cachen, serialisieren Sie sie beim Schreiben, üblicherweise als JSON mit System.Text.Json, und deserialisieren sie beim Lesen. Generische Hilfsmethoden wie SetAsync<T>/GetAsync<T> sowie eine GetOrCreateAsync-Hilfsmethode verbergen die Details und implementieren Cache-aside auf saubere Weise. Verwenden Sie JsonSerializerOptions wieder, versionieren Sie Cache-Schlüssel bei Strukturänderungen, halten Sie Nutzdaten schlank und messen Sie die Serialisierungskosten auf häufig verwendeten Pfaden.

Häufig gestellte Fragen

Ist die Lektion „Serialisierte Objekte cachen“ kostenlos?

Ja — der vollständige Text von „Serialisierte Objekte cachen“ 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 „Serialisierte Objekte cachen“?

Speichern und laden Sie komplexe Objekte. 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 4 von 4.

Wie lange dauert die Lektion „Serialisierte Objekte cachen“?

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