Memory Cache Kullanımı

Merhaba arkadaşlar, bugün sizlere .Net Core (net 5.0) bir projede memory cache kullanarak verimizi nasıl cacheleriz bundan bahsedeceğim. Örneğe geçmeden önce Cache yapısına neden ihtiyaç duyuyoruz ondan bahsetmek gerekir.

ttmind
Verimiz belirli periyotlarda güncelleniyorsa biz bu veriyi her seferinde yeniden çekme maliyetinden kurtulmak adına cache sistemlerini kullanabiliriz.
Daha basit bir örnekle anlatmak gerekirse;
Futbol takımlarının oyuncu listesi transfer döneminden, diğer transfer dönemine kadar geçerlidir. (Bazı istisnalar olabiliyor ama oralara girmeyelim şimdi 😀 )
Cache kullanılmayan bir yapıda;
  • Her oyuncu listesine bakmak istediğimizde, futbol takımından oyuncu listesini isteyerek, onlardan gelecek cevabı bekler ve cevap gelince listeye bakabiliriz.
Cache kullanılan bir yapıda;
  • Kadro kayıt süreleri bittiğinde futbol takımından oyuncu listesini bir kere isteriz ve her oyuncu listesine bakmak istediğimizde bunu kullanabiliriz. Kadroların değiştiği yeni dönemde ise tekrar bir liste isteriz.
    bence-balla-schottner-unsplash
    Basit bir şekilde cache neden ihtiyaç duyduğumuzu açıklamaya çalıştım.
    Şimdi geçelim .Net Core ile beraber nasıl in-memory cache yapısını kullanabileceğimize;

    Öncelikle

    ile web projemizi oluşturalım. Burada startup.cs altına gelerek in-memory cache yapısını kullanmamızı sağlayan servisi register edelim.

    Daha sonra Cacheleri okuyacağımız servis interfacemizi yazarak cache metotlarımızı belirtelim.

    Şimdi asıl işi yaptığımız, verileri cacheden okuduğumuz eğer cache de yoksa veriyi çekerek cache aktardığımız, IMemoryCache den kalıtım alan MemoryCacheServisimizi yazalım.

    Artık Home Controller altında IMemoryCacheService kullanarak kadromuzu çekerek ekranda gösterebiliriz.

    Umarım faydalı bir yazı olmuştur. İlgili kaynağı ve projenin kaynak kodunu aşağıda paylaşıyorum. Herkese sağlıklı günler dilerim.

    Kaynaklar

    https://docs.microsoft.com/tr-tr/aspnet/core/performance/caching/memory?view=aspnetcore-5.0

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir