.Net Core ile Docker üzerinde çalışan Redis kullanma
Bu yazımda .Net Core 3.1 ile Redis’in kullanımına ve docker üzerinde redis’i nasıl ayağa kaldırabileceğimizi göreceğiz.
Redis açık kaynak kodlu, NoSQL olan bir bellek içi (in-memory data structure store) veri yapısı deposudur. Redis’i cache, veritabanı, mesaj broker veya kuyruk yapıları için kullanabiliriz. C dili ile yazılmıştır. Oldukça hızlı ve bir çok programlama dili ile kullanılabilmektedir( Java, Go, C, C++, C#, Python, Objective-C, PHP ve daha bir çoğu…). Verileri bellek üzerinde key, value olarak farklı veri yapıları şeklinde tutabilmektedir(string, lists, hashes, sets, sorted sets,bitmaps gibi).
Docker üzerinde Redis:
İlk olarak Redis’i docker üzerinde kuralım. Bunun için aşağıdaki komutu çalıştırmamız yeterli olacaktır.
docker pull redis
Komut işlemi bitirdiğinde aşağıdaki gibi bir sonuç ile karşılaşmalısınız ve Docker desktop üzerinde Redis image’in oluştuğunu da görebiliriz.
Aşağıdaki komut ile 6379 portunda, example-redis adında redis için bir container başlatıyoruz.
docker run --name example-redis -p 6379:6379 -d redis
Yukarıdaki resimde olduğu gibi redis için bir container oluşturduk ve ContainerId’yi görmekteyiz. Redis container’ın çalıştığını ise “docker ps” komutu ile kontrol edebiliriz. Bu komut ile tüm çalışan containerlar listelenmektedir. “docker logs example-redis” komutu ile ise ismini verdiğimiz container ile ilgili loglara ulaşabiliyoruz.
Kurulumun doğru çalışıp çalışmadığını anlamak için redis-cli çalıştıracağız. Bunun için aşağıdaki komut satırlarını çalıştırıyoruz.
docker exec -it example-redis sh
Komutu çalıştırdıktan sonra “#” işareti geliyor. Buraya “redis-cli” yazıyoruz ve redis’i kurulu porta komut yazabiliriz. Şimdi CLI’a ping atabiliriz. Eğer bir sorun yok ise aşağıdaki gibi bir sonuç alacağız.
Buraya kadar docker üzerinde redis image ve container oluşturduk. Şimdi ise bir .net core uygulaması ile nasıl kullanacağımıza bakabiliriz.
.Net Core Projemizi Oluşturalım:
Cmd ekranında projemizi oluşturacağımız yola gidelim ve aşağıdaki komutu çalıştıralım.
dotnet new webapi -n RedisExampleAPI
Projemizi oluşturduğumuza göre şimdi Redis için gerekli nuget paketleri yükleyelim. Proje yolumuza gidip “code .” komutu ile projemizi vscode ile açabiliriz. Proje açıldığında bazı şeylerin eksik olduğunu söylüyor ve eklemek ister misiniz diye soruyor. Burada evet dememiz gerekiyor.
Vscode üzerinde Ctrl + Shift + “ yaparak terminali açabiliriz. Redis için StackExchange.Redis paketini kullanacağız. Gerekli paketleri yüklemek için aşağıdaki komutu terminale yazıp çalıştıralım.
dotnet add package StackExchange.Redis.Extensions.AspNetCore --version 6.3.5
Startup.cs için Redis için bazı ayarları yapacağız. ConfigureServices içerisine aşağıdaki satırları ekleyelim.
IConnectionMultiplexer redis = ConnectionMultiplexer.Connect(“localhost”);
services.AddScoped(x => redis.GetDatabase());
Startup.cs aşağıdaki gibi görünecektir.
CacheController adında bir controller ekliyoruz ve içeriğine aşağıdaki kod bloğunu yazalım.
Sonuca bakalım…
Get methodu ile mevcut olan bir cache nesnesini verilen key’i ile alıyoruz. Post methodu ile verilen KeyValuePair nesnesinin key ve value’si ile yeni bir cache oluşturuyoruz. Post methodunu kullanarak bir cache nesnesi oluşturalım. Key olarak “deneme” ve Value olarak “Deneme Value” bilgilerini yazarak istek atıyorum.
Cache oluştuktan sonra redis-cli üzerinden oluşan cache’i key ile kontrol ediyorum.
Get methodunu “deneme” key’i ile çağırıyorum ve oluşturmuş olduğumuz cache’in valuesini bu şekilde alabildik.
Bu yazımda Docker üzerinde Redis image oluşturmayı ve bir .Net Core projesi ile nasıl kullanabileceğimizi gördük.
Okuduğunuz için teşekkürler…
Kaynaklar: