IDistributedCache Soyutlaması
Verileri birden çok sunucuda önbelleğe alın.
IDistributedCache Soyutlaması, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 1. 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.
Dağıtık Önbellekleme Neden Gerekli?
Bellek içi bir önbellek tek bir işlem içinde yaşar; bu nedenle yeniden başlatma sırasında kaybolur ve sunucular arasında paylaşılmaz. Dağıtık önbellek, uygulamanızın ölçeklenmiş dağıtımındaki her örneğin okuyup yazabildiği Redis gibi harici bir depoda tutulur; böylece önbellekleme yatay olarak ölçeklenmiş dağıtımlarda tutarlı kalır.
IDistributedCache Arayüzü
ASP.NET Core, dağıtılmış önbellekleme işlemini Microsoft.Extensions.Caching.Distributed içindeki IDistributedCache arkasında soyutlar. Kodunuz doğrudan Redis'e değil, bu arayüze bağlı olur; böylece uygulamaları değiştirebilirsiniz.
public interface IDistributedCache
{
byte[] Get(string key);
Task<byte[]> GetAsync(string key, CancellationToken token = default);
void Set(string key, byte[] value, DistributedCacheEntryOptions options);
void Remove(string key);
void Refresh(string key);
}Baytları Saklar
Önbelleğin byte[] sakladığına dikkat edin. Dizeleri veya nesneleri önbelleğe almak için önce onları serileştirmeniz gerekir. Yaygın kullanım durumu için kullanışlı dize genişletme yöntemleri vardır.
using Microsoft.Extensions.Caching.Distributed;
await cache.SetStringAsync("greeting", "Hello, world");
string value = await cache.GetStringAsync("greeting");Önbelleği Enjekte Etme
Herhangi bir hizmet gibi IDistributedCache isteğini kurucu enjeksiyonu üzerinden yapın.
public class WeatherService
{
private readonly IDistributedCache _cache;
public WeatherService(IDistributedCache cache)
{
_cache = cache;
}
}Önbellekten Okuma
GetStringAsync, anahtar bulunamadığında veya süresi dolduğunda null döndürür. Önbellek isabetsizliği durumunu her zaman ele alın.
string cached = await _cache.GetStringAsync("forecast:istanbul");
if (cached is null)
{
// cache miss: load from source
}Önbelleğe Yazma
SetStringAsync, isteğe bağlı sona erme ayarlarıyla (ilerideki bir derste ele alınacak options) birlikte bir değer saklar.
await _cache.SetStringAsync(
"forecast:istanbul",
"22C sunny",
new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10)
});Kaldırma ve Yenileme
RemoveAsync bir anahtarı önbellekten çıkarır (örneğin temel veri değiştiğinde). RefreshAsync, değeri değiştirmeden kayan sona erme süresini sıfırlar.
await _cache.RemoveAsync("forecast:istanbul");
await _cache.RefreshAsync("session:abc123");Bellek İçi Uygulama
Geliştirme veya denemeler için bellek içi dağıtılmış önbelleği kaydedin. Aynı arayüzü uygular; bu nedenle kodunuz aynıdır, ancak veriler aslında işlemler arasında paylaşılmaz.
builder.Services.AddDistributedMemoryCache();Sağlayıcıdan Bağımsız Kod
Yalnızca IDistributedCache arayüzüne bağlı olduğunuz için bellek içi sağlayıcıdan Redis'e (veya SQL Server'a) geçmek, hizmetlerinizde kod değişikliği yapmadan tek satırlık bir kayıt değişikliğiyle mümkün olur.
Anahtar Adlandırma Kuralları
entity:id:field gibi yapılandırılmış ve ad alanı içeren anahtarlar kullanın (örneğin user:42:profile). Açık kurallar çakışmaları önler ve önbellek geçersiz kılma işlemini öngörülebilir hâle getirir.
string key = $"user:{userId}:profile";Ne Zaman Önbelleğe Alınmamalı
Sık okunan ve nadiren değişen verileri önbelleğe alın. Son derece değişken veya kullanıcıya özel hassas veriler uygun olmayabilir; eski veri riskleri ile performans kazanımları arasındaki dengeyi her zaman değerlendirmelisiniz.
Kısa Sınama
IDistributedCache soyutlamasını sınayın.
Özet
IDistributedCache, harici ve paylaşılan bir önbelleği soyutlar; böylece her uygulama örneği aynı verileri görür. byte[] saklar; dizeler için GetStringAsync/SetStringAsync yöntemlerinin yanı sıra RemoveAsync ve RefreshAsync yöntemlerini sunar. Arayüze bağlı kalmak kodu sağlayıcıdan bağımsız ve değiştirilebilir tutar; AddDistributedMemoryCache ile Redis arasında tek satırda geçiş yapabilirsiniz. Açık ad alanı içeren anahtarlar kullanın.
Sıkça Sorulan Sorular
“IDistributedCache Soyutlaması” dersi ücretsiz mi?
Evet — “IDistributedCache Soyutlaması” 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.
“IDistributedCache Soyutlaması” dersinde ne öğreneceğim?
Verileri birden çok sunucuda önbelleğe 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 1. dersidir.
“IDistributedCache Soyutlaması” 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