ASP.NET Core Projelerinde Redis İmplementasyonu

Arkadaşlar herkese selamlar. Bu yazımda Redis nedir? ASP.NET Core projelerinde Redis nasıl implemente edilir bu konulardan bahsedeceğim.

Image for post
Image for post

Remote Dictionary Server (Redis) verileri key-value olarak saklayan bir NoSQL veritabanıdır. C programlama dili kullanılarak yazılmıştır. Tamamen open source olarak Github üzerinde bulunmaktadır. (https://github.com/redis/redis)

Redis verileri bellek üzerinde tuttuğu ve buradan yazma ve okuma yaptığı için çok hızlı çalışır. Bu sayede uygulamalar üzerinde cache altyapısı olarak kullanılır ve cache üzerinden okunmak istenen veriler Redis veritabanına yazılır.

Cache mekanizması yanında Redis Session bilgilerini saklamak için de kullanılabilir. Çünkü çok hızlı sürelerde okuma yapabildiği için Session bilgileri için kullanımı gayet uygundur.

Redis’in Windows işletim sistemi üzerinde kurulumundan kısaca bahsedeceğim.

İlk olarak yapmanız gereken işlem Github release kısmından size uygun olan Redis versiyonunu seçip, “.msi” dosyasını indirerek kolayca kurulumunu yapmaktır.

https://github.com/microsoftarchive/redis/releases

Image for post
Image for post

Sonrasında bilgisayarınızda Program Files -> Redis klasörü altında aşağıdaki dosyaları içeren bir klasör oluşacaktır.

Image for post
Image for post

Burada redis-server.exe’ye çift tıkladığımızda sunucuyu local bilgisayarımız üzerinde çalıştırmış olacağız. Bunun ardından redis-cli ile sunucu çalışma durumunu test edebiliriz. Aşağıdaki şekilde bir key için value set edip sonrasında okuyarak kontrol edebilirsiniz.

Image for post
Image for post

Bilgisayarımıza redis-server kurup testini yaptıktan sonra sıra geldi ASP.NET Core projemize Redis implementasyonu yapmaya. Bir ASP.NET Core Web Api projesi üzerinden anlatım yapacağım.

Projenin genel dosya yapısı aşağıdaki gibi.

Image for post
Image for post

İlk olarak Startup.cs dosyası içerisinde ConfigureServices methoduna Redis kullanacağımızı ve bunu kullanacağımız port ve sunucu bilgisini setliyoruz.

Image for post
Image for post

Bu sayede artık Controller veya farklı sınıflar üzerinde Redis servisini inject ederek rahatça sunucumuza erişip kayıt atabilir veya okuyabiliriz.

Bu uygulama ile benim amacım eğer kullanıcı hesapları Redis üzerinde var ise oradan okumak eğer yoksa BankingOperationService üzerinden okuyup Redis sunucuma yazmak.

2. adım olarak Controller açıyoruz. İlk olarak Dependency injection yöntemi ile Redis sunucu erişimi için kullanacağımız nesneyi ve bankacılık servisi için gerekli nesneyi Controller sınıfımıza ekliyoruz.

Image for post
Image for post

Sonrasında aşağıdaki kod ile tüm işlemlerimi yapıyorum. Bu işlemlere yazının devamında parça parça değineceğim.

Image for post
Image for post

Kırmızı bölüm ile aslında Redis sunucumuza gidip, servisi çağırırken kullanılan branchId önceden Redis sunucu üzerine yazıldı mı, burada bulunuyor mu bunu kontrol ediyoruz.

Sarı bölümde eğer sorguladığımız branchId Redis sunucumuzda bulunuyor ise bunu öncelikle okuyup string olarak alıyoruz. Burada ben JSON olarak Redis’e yazıp tekrar JSON olarak okuyorum. Bu string Deserialize ediyoruz ve bu sayede kullanıcı listesini Redis üzerinden okumuş oluyoruz.

Mavi bölümde ise eğer sorguladığımız branchId Redis sunucumuzda yok ise, bunu BankingOperationService üzerinden okuyup sonrasında JSON olarak serialize ediyoruz. Sonra olarak JSON olarak serialize ettiğimiz nesneyi string bir değişkene atıyoruz. Burada farklı olarak gözümüze çarpan kısım options nesnesi. Burada options nesnesi üzerine 2 adet zaman tanımı yapıyoruz.

AbsoluteExpiration : Verinin cache üzerinden tutulma süresini belirlemektedir.

SlidingExpiration : Verinin verilen AbsoluteExpiration süresi içerisinde çağırılır ise verinin tutulma süresini bir o kadar daha uzatmasını sağlar.

Yazdığımı kod ile Redis sunucumuzu kontrol ediyoruz eğer önceden yazılmış veri var ise kullanıyoruz, yok ise gidip servisten okuyup tekrar Redis üzerine yazılmasını sağlıyoruz.

Projeye Github hesabım üzerinden ulaşabilirsiniz.

Continuously learning developer. Software Engineer @intertechIT Checkout my open source projects at http://github.com/okandavut

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store