Merhabalar,
Bugün sizinle günümüz yazılım sektörünün olmazsa olmazlarından biri olan Redis’e giriş yapacağız. Redis nedir, ne sağlar ve .net core’da nasıl kullanılır sorularının cevabını vereceğiz.
Redis Nedir ve Ne Sağlar?
Redis, in-memory dağıtık bir veritabanıdır. Saniye başına istek miktarı yüksek sistemlerde veritabanı sorgularını yapmak yerine, ram üzerinde cachlenmiş response’u hızlı bir şekilde istemciye döndürmek için kullanılır.
Nasıl Kullanılır?
.Net Core üzerinde Redis’i kullanmak için öncelikle Redis’i kullanacağınız makina’ya yüklemeniz gerekmektedir. Buradan Redis’i makinanızı(PC, Server etc.) kurabilirsiniz. Gelelim Net Core üzerinde Redis’i kullanmaya.
Öncelikle aşağıdaki paketi Nuget Manager yada paket konsolunu kullanarak yüklüyoruz.
Microsoft.Extensions.Caching.StackExchangeRedis
Paketi yüklediğimizde konfigürasyon işlemini yapmak üzere Program.cs sınıfını açıyoruz ve aşağıdaki kodu ekliyoruz.
builder.Services.AddStackExchangeRedisCache(action =>
{
action.Configuration = "localhost:6379";
});
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
// Redis Configuration
builder.Services.AddStackExchangeRedisCache(action =>
{
action.Configuration = "localhost:6379";
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Evet projemize Redis’i tamamiyle entegre ettik. Şimdi nasıl kullanacağımızı görelim. Öncelikle Redis Instance’ını Dependency Injection kullanarak elde edelim. Biz HomeController içerisinde kullanacağımız için aşağıdaki gibi bir kod kullandık. Siz de kullanabilir yada kullanacağınız bölümde instance’ını alabilirsiniz.
private readonly IDistributedCache _distributedCache;
public HomeController(IDistributedCache distributedCache)
{
_distributedCache = distributedCache;
}
Evet, Instance’ımızı aldık. Aşağıdaki gibi veri kaydı yapabiliriz. Burada depoladığımız veri eğer 1 saat boyunca hiç sorgulanmazsa kaldırılır. 7 gün sonunda her durumda kaldırılacaktır. Bu parametreleri siz kendi tercihlerinize göre setleyebilirsiniz.
var dataToStore = "Sample Data to Store";
var data = Encoding.UTF8.GetBytes(dataToStore);
var key = "Data";
var options = new DistributedCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromHours(1)) // 1 saat erişilmediyse expire et
.SetAbsoluteExpiration(DateTime.Now.AddDays(7)); // 7 gün sonunda expire et.
await _distributedCache.SetAsync(key, data, options);
Kaydettiğimiz data’ya ise aşağıdaki gibi erişebiliriz.
var storedData = await _distributedCache.GetAsync(key);
var parsedStoredData = Encoding.UTF8.GetString(storedData);
Evet, bugünlük bu kadar. Bir sonraki konumuzda görüşmek üzere.