Cache in-memory ve Redis .NET

Serhat Selim
3 min readApr 17, 2022

--

Merhabalar, Docker üzerinde .Net 5 uygulamamız ile in memory cache ve Redis kullanımının nasıl olacağına hep birlikte bakalım.

Öncelikle in-memory cache ve distributed cache nedir bunlardan bahsetmek istiyorum;

In-memory cache

In-memory cache, önbelleğe alınmış verileri depolamak için sunucu belleğini kullanır. Uygulamanın bulunduğu sunucu üzerinde verileri tutar.

Distributed Cache

Uygulama bir bulutta veya sunucu grubunda barındırıldığında verileri depolamak için dağıtılmış bir cache yapısının kullanıldığı yapılardır. Cache, istekleri işleyen sunucular arasında paylaşılır. İstemci için önbelleğe alınmış veriler varsa, bir istemci gruptaki herhangi bir sunucu tarafından işlenen bir istek gönderebilir.

Altta verecegim linkte 2 ayrı proje oluşturdum, bu iki uygulamada in-memory cache ve distributed cache(redis) örneklerine erişebilirsiniz.

github link

Distributed Cache & Redis

İlk adımda docker üzerinde redis uygulaması ayağa kaldıralım, docker hub üzerinden redis uygulamasını localinize çekebilirsiniz,

$ docker pull redis

daha sonra docker üzerinde bir redis instance’i olusturmak için alttaki kodu cli üzerinde çalıştırın,

$ docker run --name some-redis -d redis
redis uygulamamiz :6379 portunda docker üzerinde ayakta

Redis hazir olduğuna göre bir api ile haberleşmesini sağlayabiliriz, .net api uygulamamızı oluşturup gerekli redis paketleri yükleyip konfigurasyonları yapalım,

paketler

StackExchange.Redis.Extensions.AspNetCore

StackExchange.Redis.Extensions.Newtonsoft

paketlerini nuget üzerinden yükleyebilirsiniz.

konfigurasyon için appsettings.Development.json ve Startup.cs classımızı düzenleyelim

appsettings.Development.json

Startup.cs

Endpoint

Son olarak controller üzerinde metodlarımızı olusturup uygulamamızı test edebiliriz

uygulamamızı run edip swagger üzerinden key-value şeklinde ilk verimizi kayit edelim

verimiz kayit edildi şimdi key değer ile kayit ettiğimiz veriyi geri cağıralım

görüldüğü üzere .net web api uygulamız ile dağıtık şekilde docker üzerinde çalışabilen redis içerisine veri saklayıp kullanabiliyoruz.

In-memory cache

.Net frameworkü içerisinde IDistributedCache interface’ini kullanarak uygulama ile aynı sunucu üzerinde verilerimizi memoryde saklayabiliriz IDistributedCache interface’inin adı sizi yanıtlmasın distributed olarak çalışmamakta, uygulama ile cache aynı sunucu üzerinde olmak zorundadır.

konfigurasyon için Startup.cs classımızı düzenleyelim

Extension

IDistributedCache interface’i cache’i byte array olarak return ediyor bu sebeple byte’i istediğimiz tipte dönebilmek için projemize IDistributedCache için bir extension ekleyelim.

Endpoint

Son olarak controller üzerinde metodlarımızı olusturup get ve set metodları ile uygulamamızı test edebiliriz

uygulamamızı run edip swagger üzerinden key-value şeklinde ilk verimizi kayit edelim, kullanım olarak redis ile aynı oldugunu görebiliriz, ancak çalışma prensipleri farklı.

verimiz kayıt edildi şimdi kayıt ettiğimiz key ile verimizi geri çağıralım

evet testimiz başarılı, .net üzerinde IDistributedCache interface’ini kullanarak in-memory bir uygulama oluşturmuş olduk.

Teşekkürler..

--

--

No responses yet