Daha önceki yazılarımızda asp .net core da built-in yapılarına değinip Dependency Injection kısmına bakmıştık.Bu yazımında asp .net cor’u defaulf built-in yapısında In-Memory Cache özelliğinden bahsedeceğiz.

In-Memory Cache Özelliğini Aktif Etmek

In-memory cache özelliği asp.net core içerisinde bir service olarak bulunmaktadır. Bu servis default kapalı gelir yapmamız gereken startup.cs içerisinde bulunan ConfigureServices metodunda aşağıdaki gibi cache servisini açmak.

IMemoryCache interface,asp .net core projelerinde in-memory cache kullanmamızı sağlayan bir interface’dir. Bu interface’e ait metotları kullanarak cache set,get,remove gibi işlemleri yapabiliriz.

In-Memory Cache Kullanımı

In-Memory Cache servisi aktifleştirdikten sonra IMemoryCache interface’ini kullanmak istediğimiz katmana ait constructor’da inject ediyoruz.
Bizde geriye Student listesi return ettiğimiz bir controller tanımlayarak IMemoryCache interface’ini aşağıdaki gibi constructor injection parameter olarak verelim.

StudentController içerisindeki Get metodunda sırasıyla işlemlerimizi uygulayalım. _memoryCathe.Set(key,value,cacheOptions) metodu 3 tane parametre alıyor. cacheOptions parametresi de 2 tane değer alıyor. Bunlar;

  • AbsoluteExpiration: Cache expire süresi
  • Priority: Memeory şiştiğinde cache objelerini hangi öncelikte silinecek.

Gelen ilk request için cache’de o key’e ait bir obje olmadığından ilk response source’a gidip(bir repository yada service layer olabilir) dönen değer alınıp 5 dakika expire süresi set edilerek oluşturacaktır. Artık ondan sonraki bütün request’ler 5 dakika boyunca source’a gitmeden response’u cache’de bulup Get işlemi yapıp return edecektir. Expire süresi dolduğunda ise ilgili key ve obje cache’den silinecektir.

Set, Get yapabildiğimiz gibi Remove işlemide yapabiliriz. Bunun için cacheKey değerini parametre olarak Remove metoduna verip call yapmak yeterli.

 _memoryCache.Remove(cacheKey);

CacheItemPriority enum’ı içerisinde Low, Normal, High, NeverRemove değerleri vardır. CachedObject Priority değerine göre memory de yer açmak için sırayla silinir. Memory’den otomatik silme işlemi yapıldığında bunun bilgisini bize iletmesini sağlayan bir callback handler metodunu aşağıdaki gibi options’a register edebiliriz ve silme işlemi yapılırken bu metot tetiklenerek bize haber verir.

Server-side bir uygulama için cache olmazsa özelliklerden biri haline gelmiştir. Asp.net core’da da i memory ve distributed cache işlemleri yapmamızı sağlayan service’ler bulunmaktadır. Bu yazımızda basitçe memory cache özelliğini projemize nasıl entegre edeceğimize baktık.Umarım faydalı olmuştur.

Kaynak Kodu, Yazı Kaynağı

Yararlanılan kaynaklar