Redis Cache Kullanımı - ASP.NET Core Web API
Merhabalar 😊 Bu yazımda öncelikle Redis kurulumu yapıp, daha sonra .Net Core projesi üzerinde nasıl kullanıldığını göstereceğim.
Hadii başlayalım. ✌️😇
Öncelikle “Redis nedir ? Neden kullanılır ? Cacheleme işlemine neden ihtiyaç duyarız?” bu soruları cevaplayalım.
Redis, geliştiriciler tarafından en çok kullanılan ve bilinen NoSQL veritabanlarından birisidir. Redis, açık kaynaktır ve kaynak kodlarına GitHub üzerinden erişilebilmektedir. C dili ile yazıldığı için yüksek performanslı sonuçlar vermektedir. Linux ve türevi işletim sistemleri tarafından desteklenmekte fakat Windows tarafı için resmi bir destek olmasa da community tarafından desteklenmektedir.
Redis günümüz sistemlerinde en çok kullanılan anahtar-değer veritabanıdır ve genellikle caching, session yönetimi, pub/sub, message broker amacıyla kullanılmaktadır.
Redis’ in Özellikleri
- Yüksek Kullanılabilirlik
- Üstün Performans
- Yüksek Düzeyde Veri Yapısı
- Veri Kalıcılığı
- Anahtar Tabanlı Erişim
- Genişletebilirlik
Önbellek, gelecekteki verilere daha hızlı erişilebilmesi için verilerin depolandığı geçici depolamadır. Dolayısıyla cacheleme, verileri önbellekte saklama işlemidir.
Redis’den bu kadar bahsettiğimize göre kurulum işlemlerine geçebiliriz. 😊
Bu link üzerinden Redis’i indirebilirsiniz. İndirilen dosya içerisinden redis-server.exe dosyasını çalıştırmanız gerekmektedir.
Eğer bu ekranı görüyorsanuz Redis düzgün bir şekilde kurulmuş ve çalışıyor demektir.
Ayrıca Redis’ i daha kolay bir şekilde takip etmek için Redis Desktop Manager’ı da kurup çalıştırabiliriz.
Redis projemizde kullanmamız için hazır durumda. Hadi projemizi oluşturalım. 😊
Ben Asp .Net Core Web API projesini seçiyorum ve ilerliyorum.
Projemizi kurduktan sonra Nuget paketleri içerisine Microsoft.Extensions.Caching.Redis paketini projemize install edelim.
Şimdi API üzerinden key i gönderip dönen cevaba bakalım.
Öncelikle Startup.cs üzerinden ConfigureServices’e Redis ile ilgili connectionımızı yazıyoruz.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "RedisExampleCore", Version = "v1" });
});
var redis = ConnectionMultiplexer.Connect("localhost,abortConnect=false");
services.AddSingleton<IDatabase>(s => redis.GetDatabase());
}
Controllers’a sağ tıklayıp yeni bir Controller ekliyoruz.
Get ve Post methodlarımızı ekliyoruz.
[Route("api/[controller]")]
[ApiController]
public class CacheController : ControllerBase
{
private readonly IDatabase _database;
public CacheController(IDatabase database)
{
_database = database;
}
//get api/<cachecontroller>/5
[HttpGet]
public string Get([FromQuery] string key)
{
return _database.StringGet(key);
}
// post api/<cachecontroller>
[HttpPost]
public void Post([FromBody] KeyValuePair<string, string> keyvalue)
{
_database.StringSet(keyvalue.Key, keyvalue.Value);
}
}
Artık Postman üzerinden testimizi yapabiliriz.😇
Öncelikle Post methodu ile yeni bir key-value setliyorum.
Get methodu ile Redis3 keyini gönderdiğimizde bize ne döndürdüğünü görelim.
Testimiz başarılı.✌️😇
Son olarak Desktop Manager üzerinden key ve value değerlerim görünüyor mu kontrol etmek istiyorum.
Eveet, başarılı bir şekilde değerlerimiz görünüyor.🙂
Sizler için projeyi github adresimde paylaştım. Dilerseniz indirip deneyebilirsiniz.
Bir sonra ki yazımda Redis’den elde ettiğimiz bu değerleri proje içerisinde nasıl kullanabiliriz bundan bahsedeceğim. Görüşmek üzere. Bol kodlamalar!👋