ASP.NET Core

.NET'te Tüm Önbellek Türleri: Her Birini Ne Zaman Kullanmalı (1. Bölüm)

Anton Martyniuk'un yeni derinlemesine yazısı, IMemoryCache, Redis destekli IDistributedCache ve HybridCache dahil .NET'teki önbellek seçeneklerini ve her birinin ne zaman uygun olduğunu anlatıyor. Yazı, önbelleğin yavaş sorguları gizlemek yerine onlardan sonra eklenmesi gerektiğini ve tek süreçli bir önbelleğin birden fazla instance'da eski veri döndürebileceğini gösteriyor. Ölçekli bir ASP.NET Core uygulaması için önbellek seçmeden önce okumaya değer.

Anton DevTips Anton Martyniuk
Yayın tarihi
Okuma süresi
12 dk okuma
agent çalıştırması #14
agent çalıştırması #14
Orijinale git antondevtips.com

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Önbelleği yavaş sorguyu düzelttikten sonra ekleyin, sorunu gizlemek için kullanmayın.
  • IMemoryCache için AddMemoryCache ile birlikte SizeLimit ayarlayın; SizeLimit varsa her girişte SetSize çağrılmalı.
  • Birden fazla instance çalıştırıyorsanız süreç içi IMemoryCache yerine paylaşılan bir store kullanın.
  • IDistributedCache ile Redis'te bağlantı hatasını yakalayıp veritabanına geri dönen bir yol ekleyin.
  • HybridCache'te RemoveByTagAsync ile etiketli anahtarları toplu silebilirsiniz.
  • HybridCache'te L1 senkronize olmadığından LocalCacheExpiration değerini kısa tutun.

Bu derinlemesine yazının ilk bölümü, .NET'teki önbellek seçeneklerini ve hangisinin ne zaman uygun olduğunu inceliyor. Yazar, önbelleğin yavaş veritabanı sorgularını gizlemek için değil, onlar düzeltildikten sonra eklenmesi gerektiğini vurguluyor. Bir kargo takip API'si üzerinden, süreç içi bir önbelleğin uygulama iki instance'a ölçeklendiğinde nasıl eski veri döndürebileceği gösteriliyor.

Her seçeneğin ödünleri ayrı ayrı ele alınıyor. IMemoryCache nesneyi serileştirmeden aynı referansla döndürür, ancak varsayılan bir boyut sınırı yok, anahtar bazında kilit yok ve instance'lar arasında paylaşım da yok. IDistributedCache ile Redis veriyi paylaşır ve yeniden başlatmalara dayanır, fakat her isabet bir ağ turu ve deserialization maliyeti getirir. HybridCache bellek içi L1 ile isteğe bağlı Redis L2'yi birleştirir, ancak L1 katmanları instance'lar arasında senkronize değildir.

Gerçek dünyada kullanımı

  • Birden fazla instance'da çalışan kargo takip API'si, ortak bir Redis üzerinden aynı veriyi görmeli.
  • Sık okunan ama nadiren değişen bir referans verisini tek instance'lı bir servise bellek içi önbellekle eklemek.
  • Toplu veri içe aktarımından sonra ilgili tüm önbellek girişlerini etiketle topluca temizlemek.

Neden önemli

Ölçeklendiğinizde önbellek seçiminiz tutarlılığı doğrudan etkiler; yanlış seçim, kullanıcıya bir kez güncellenmiş bir veriyi tekrar eski haliyle gösterebilir. HybridCache'i L2 olmadan başlatıp sonra Redis eklemek mümkün, ama L1 senkronizasyonu için kısa süreli expiration gerekir.

Bu özet, Anton DevTips üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü