0Pricing
C# Academy · Ders

Önbellek Kalıpları ve Süre Dolumu

Önbellek yanına koyma yaklaşımını uygulayın ve süreleri ayarlayın.

Önbellek Kalıpları ve Süre Dolumu, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 3. 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.

Önbellekleme Örüntüleri

Önbelleği nasıl okuyup yazdığınız bir örüntüdür. Web uygulamalarında en yaygın örüntü, kodunuzun veri kaynağının çevresinde önbelleği yönettiği önbellek-yanı örüntüsüdür.

Önbellek-Yanı Örüntüsü

Önbellek-yanı (tembel yükleme) üç adımda çalışır: önbelleği denetleyin; isabetsizlik durumunda kaynaktan yükleyip önbelleği doldurun; değeri döndürün. Önbellek gerektiğinde doldurulur.

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;
}

Sona Ermenin Neden Gerekli Olduğu

Önbelleğe alınan veriler güncelliğini yitirebilir. Sona erme, belirli bir sürenin ardından kayıtları otomatik olarak çıkarır; böylece sonraki okuma güncel verileri yeniden yükler ve performans ile güncelliğini yitirme arasında denge kurar.

Mutlak Sona Erme

Mutlak sona erme, kullanımdan bağımsız olarak bir kaydı sabit bir zamanda çıkarır. Verilerin yalnızca bilinen bir zaman aralığında geçerli olduğu durumlarda kullanın.

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

Kayan Sona Erme

Kayan sona erme, her erişimde zamanlayıcıyı sıfırlar. Bir kayıt düzenli kullanıldığı sürece yaşamaya devam eder, ancak belirli bir süre kullanılmadığında çıkarılır. Oturum benzeri veriler için oldukça uygundur.

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

İkisini Birleştirme

İkisini de ayarlayabilirsiniz: kayan sona erme sık kullanılan verileri canlı tutarken mutlak sınır, kaydın belirli bir üst sınırdan daha uzun yaşamamasını ve sonunda yenilenmesini garanti eder.

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

Seçenekleri Set Sırasında Uygulama

Kaydın kendi sona erme ilkesini taşıması için seçenekleri SetStringAsync (veya SetAsync) yönteminin üçüncü parametresi olarak geçirin.

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

Yazma Geçişli Önbellekleme ve Geçersiz Kılma

Kaynak veriler değiştiğinde, okumaların güncelliğini yitirmiş değerler sunmaması için önbelleği çıkarın veya güncelleyin. Önbellek-yanı örüntüsü, yazma işlemlerini genellikle etkilenen anahtarda bir RemoveAsync çağrısıyla eşleştirir.

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

Önbellek Yığılmasını Önleme

Popüler bir anahtarın süresi dolarsa birçok istek aynı anda onu yeniden yükleyebilir (yığılma). Kısa süreli kilitler, biraz rastgeleleştirilmiş sona erme süreleri veya arka planda yenileme kullanarak bunu azaltın; böylece kaydı yalnızca bir istek yeniden oluşturur.

Sona Erme Değerlerini Seçme

Süreleri verilerin ne sıklıkta değiştiğine ve ne kadar güncellik kaybının kabul edilebilir olduğuna göre seçin. Başvuru verileri uzun önbellekte kalma sürelerini tolere eder; hızla değişen veriler için kısa süreler veya olay tabanlı geçersiz kılma gerekir.

İsabetsizliğin Maliyeti

Her önbellek isabetsizliği bir kaynak yüklemesine neden olur; bu nedenle isabet oranını en üst düzeye çıkarmak için anahtarları ve önbellekte kalma sürelerini tasarlayın. Önbelleğinizi zaman içinde ayarlamak için isabet ve isabetsizlik oranlarını izleyin.

Kısa Sınama

Önbellekleme örüntülerini ve sona ermeyi sınayın.

Özet

Önbellek-yanı örüntüsü önbelleği denetler, isabetsizlik durumunda veriyi yükler ve önbelleği doldurur. Mutlak sona erme sabit bir zamanda kaydı çıkarır; kayan sona erme erişimde zamanlayıcıyı sıfırlar; ikisini DistributedCacheEntryOptions ile birleştirebilirsiniz. Yazma işlemlerinde RemoveAsync ile geçersiz kılın, yığılmalara karşı önlem alın ve önbellekte kalma süreleriyle anahtarları erişim örüntülerine ve kabul edilebilir güncellik kaybına göre ayarlayın.

Sıkça Sorulan Sorular

“Önbellek Kalıpları ve Süre Dolumu” dersi ücretsiz mi?

Evet — “Önbellek Kalıpları ve Süre Dolumu” 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.

“Önbellek Kalıpları ve Süre Dolumu” dersinde ne öğreneceğim?

Önbellek yanına koyma yaklaşımını uygulayın ve süreleri ayarlayı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 3. dersidir.

“Önbellek Kalıpları ve Süre Dolumu” 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

  1. IDistributedCache Soyutlaması
  2. Redis'e Bağlanma
  3. Önbellek Kalıpları ve Süre Dolumu
  4. Serileştirilmiş Nesneleri Önbelleğe Alma
← C# Academy Sayfasına Dön