.NET Core’da cache kullanımları #2 Distributed Cache

Gökten Karadağ
3 min readJun 1, 2020

--

Distributed cache , birden çok web uygulaması tarafından paylaşılan uygulamalar için verilerin önbellekte tutulmasını sağlar. Önbellekteki bilgiler tek tek web sunucularının belleğinde saklanmak yerine harici bir hizmette saklanır ve tüm sunucular tarafından kullanılabilir duruma gelir. Uygulamalar restart edildikten sonra veya yeni versiyon çıkıldıktan sonra da cacheteki bilgiler geçerli kalmaya devam eder.

Cache ile ilgili daha çok bilgi almak ve .NET Core’daki diğer cache kullanımlarını incelemek için, serinin diğer yazılarına aşağıdaki linklerden ulaşabilirsiniz.

  1. .NET Core’da cache kullanımları #1 InMemory Cache
  2. .NET Core’da cache kullanımları #2 Distributed Cache
  3. .NET Core’da cache kullanımları #3 Response Cache

.NET Core’da IDistributedCache interface’i basit olarak cache’e ekleme silme güncelleme gibi işlemleri yapan bir arayüz sunar. Bu metotları hem async hem de sync olarak kullanabilirsiniz.

.NET Core’da IDistributedCache interface ile kullanabileceğiniz cache tipleri şu şekildedir.

Distributed Memory Cache

Distributed Memory Cache tam manasıyla bir distributed cache değildir, cachedeki bilgiler uygulamanın çalıştığı sunucuda tutulur. Testlerde ve tek sunuculu uygulamalarda kullanımı uygundur.

Distributed SQL Cache

Cacheteki bilgileri sql server’da bir tabloda tutulmasını sağlar.Bu tabloyu sql-cache komutu ile oluşturabilirsiniz.

Örnek komut:

dotnet sql-cache create "connection string" "schema" "table"

Komut başarıyla çalıştırdıktan sonra ilgili veritabanında oluşturulan tablonun şeması aşağıdaki gibidir.

Distributed NCache

NCache, .NET ve .NET Core’da çalışabilen açık kaynaklı, bir distributed cache sistemidir. Daha detaylı bilgi için burayı inceleyebilirsiniz

Distributed Redis Cache

Redis hızlı çalışan , verileri key -value olarak bellekte tutan açık kaynak veri deposudur. Redis veritabanı,cache,session storage vb şekillerde olarak kullanılabilir.

Şimdi örnek bir projede redis’i nasıl kullanacağımızı inceleyelim.

Öncelikle kurulum için redis’i docker üzerinden ayağa kaldıralım.

docker pull redis
docker run -p 6379:6379 redis

Redis’i kendi makinenizde kurup test etmek için burayı inceleyebilirsiniz, ayrıca heroku, azure gibi platformlardan da hızlıca kurulum sağlayabilirsiniz

Kurulumu sağladıktan sonra projemize Microsoft.Extensions.Caching.Redis paketini ekleyelim ardından Startup.cs üzerinde ConfigureService metoduna aşağıdaki kod bloğunu ekleyelim.

services.AddDistributedRedisCache(options =>{
options.Configuration = "localhost";
options.InstanceName = "SampleInstance";
});

Şimdi bir controller içinde örnek bir kullanım yapalım.

Artık ilgili sayfaya istekte bulunduğumuzda cache’a atadığımız değeri görebiliriz.

örnek metoda yapılan isteğin chrome dev toolstaki sonucu

Redisteki değerleri görüntüleyebilmek için Redis Desktop Manager‘ı kullanabilirsiniz. Ücretli olan bu uygulamanın alternatifi olarak Redis Commander’ı docker üzerinden veya npm üzerinden kurulum sağlayarak kullanabilirsiniz.

RedisCommander docker kurulumu için;
docker pull rediscommander/redis-commander
docker run -p 8081:8081 rediscommander/redis-commander:latest
Ardından localhost:8081 adresinden arayüze erişebilirsiniz.

Redis Commander arayüzünden görünüm

--

--