Serileştirilmiş Nesneleri Önbelleğe Alma
Karmaşık nesneleri saklayın ve geri alın.
Serileştirilmiş Nesneleri Önbelleğe Alma, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.
Dizelerden Fazlasını Önbelleğe Alma
Gerçek uygulamalar yalnızca dizeleri değil, nesneleri de önbelleğe alır. IDistributedCache bayt sakladığı için nesnenizi bir bayt/dize gösterimine serileştirmeniz, okuma sırasında da serileştirmeyi geri almanız gerekir. Genellikle JSON tercih edilir.
System.Text.Json ile Serileştirme
Bir nesneyi JSON dizesine dönüştürmek için System.Text.Json kullanın, ardından bunu SetStringAsync ile saklayın.
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);Okuma Sırasında Serileştirmeyi Geri Alma
Okuma sırasında JSON dizesini alın ve kendi türünüze geri dönüştürün; önbellek isabetsizliğinde oluşan null durumunu ele almayı unutmayın.
string json = await _cache.GetStringAsync("product:1");
if (json is null) return null;
Product product = JsonSerializer.Deserialize<Product>(json);Yeniden Kullanılabilir Genel Yardımcı
Çağıranların her türü temiz biçimde önbelleğe alabilmesi için serileştirme ve serileştirmeyi geri alma mantığını genişletme yöntemleriyle sarın.
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);
}Genel Get Yardımcısı
Eşleşen alıcı, değeri T türüne geri dönüştürür ve isabetsizlik durumunda default döndürür.
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);
}GetOrCreate Örüntüsü
Önbellek-yanı örüntüsünü serileştirmeyle tek bir yardımcıda birleştirin: önbelleğe alınmış nesneyi döndürün; yoksa bir fabrika çalıştırın, sonucunu önbelleğe alın ve döndürün.
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 Kullanımı
Çağrı noktası, tüm önbellekleme mekanizmalarını gizleyen tek satırlık bir ifadeye dönüşür.
var product = await _cache.GetOrCreateAsync(
"product:1",
() => _repository.LoadProductAsync(1),
new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(15)
});Serileştirici Seçenekleri
Önbelleğe alınan içeriklerin tutarlı ve küçük kalması, ayrıca seçeneklerin tekrar tekrar ayrılmasının önlenmesi için tek bir JsonSerializerOptions örneğini yeniden kullanın (örneğin camelCase kullanın ve null değerlerini yok sayın).
private static readonly JsonSerializerOptions JsonOptions = new()
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DefaultIgnoreCondition =
System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull
};Önbelleğe Alınan Yapıları Sürümlendirme
Önbelleğe alınan bir türün yapısı değişirse eski JSON serileştirmeden geri alınamayabilir. Anahtara bir sürüm bölümü ekleyin (örneğin product:v2:1); böylece bir dağıtım, uyumsuz kayıtları doğal olarak atlar.
İçerikleri Sade Tutma
Yalnızca ihtiyaç duyduğunuz alanları önbelleğe alın. Daha küçük içerikler Redis'te daha az ağ ve bellek kullanımı sağlar; ayrıca her okuma ve yazmada daha hızlı serileştirme sunar.
Serileştirme Maliyetini Göz Önünde Bulundurma
Serileştirme ücretsiz değildir. Çok yoğun kullanılan yollar için daha sıkıştırılmış biçimleri veya önceden oluşturulmuş sonuçları önbelleğe almayı değerlendirin ve önbelleğin gerçekten net bir kazanım sağladığını doğrulamak için her zaman ölçüm yapın.
Kısa Sınama
Serileştirilmiş nesneleri önbelleğe almayı sınayın.
Özet
Nesneleri önbelleğe almak için yazma sırasında (genellikle System.Text.Json üzerinden JSON kullanarak) serileştirin, okuma sırasında da serileştirmeyi geri alın. Genel SetAsync<T>/GetAsync<T> ve GetOrCreateAsync yardımcısı mekanizmaları gizleyerek önbellek-yanı örüntüsünü temiz biçimde uygular. JsonSerializerOptions örneğini yeniden kullanın, yapılar değiştiğinde önbellek anahtarlarını sürümlendirin, içerikleri sade tutun ve yoğun kullanılan yollarda serileştirme maliyetini ölçün.
Sıkça Sorulan Sorular
“Serileştirilmiş Nesneleri Önbelleğe Alma” dersi ücretsiz mi?
Evet — “Serileştirilmiş Nesneleri Önbelleğe Alma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.
“Serileştirilmiş Nesneleri Önbelleğe Alma” dersinde ne öğreneceğim?
Karmaşık nesneleri saklayın ve geri alın. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Serileştirilmiş Nesneleri Önbelleğe Alma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- IDistributedCache Soyutlaması
- Redis'e Bağlanma
- Önbellek Kalıpları ve Süre Dolumu
- Serileştirilmiş Nesneleri Önbelleğe Alma