Redis İle DistributedCache Kullanımı
DistributedCache’i Redis ile inceleyeceğiz.

İçerik olarak Redis veri türlerine çok temas etmeden yüzeysel cacheleme yapmamızı sağlayan ‘StackExchangeRedisCache’ yöntemini uygulayacağımızı, esas Redis’e tam teferruatlı yönetimi bir sonraki makalede ele alacağımızı bildirerek konuya başlayalım.
Kullanılacak Kütüphane ve Servisler
Bir Asp.NET Core uygulamasında Redis DistributedCache kullanabilmek için ilk olarak uygulamaya Microsoft.Extensions.Caching.StackExchangeRedis kütüphanesinin dahil edilmesi gerekmektedir. Ardından ‘Startup.cs’ dosyasından aşağıdaki gibi ‘AddStackExchangeRedisCache’ modülü uygulamaya eklenmelidir. Burada dikkat edilmesi gereken husus Redis serverın ayakta olmasıdır.
Bu işlemden sonra artık uygulamada ‘IDistributedCache’ interface’ını kullanarak aşağıdaki örnekte olduğu gibi dependency injection’dan servisimizi talep edebiliriz.
1 2 3 4 5 6 7 8 9 10 11 | using Microsoft.Extensions.Caching.Distributed; public class ProductController : Controller { IDistributedCache _distributedCache; public ProductController(IDistributedCache distributedCache) { _distributedCache = distributedCache; } } |
Metotlar
SetString
Metinsel türde key-value tarzında veri depolamasını gerçekleştiren metottur.
ya da
1 2 3 4 5 6 7 8 9 10 11 | public IActionResult CacheSetString() { _distributedCache.SetString("date", DateTime.Now.ToString(), new DistributedCacheEntryOptions { AbsoluteExpiration = DateTime.Now.AddSeconds(1200), SlidingExpiration = TimeSpan.FromSeconds(60) }); return View(); } |
GetString
Metinsel türde depolanmış verilerden key değerine karşılık value değerini döndüren fonksiyondur.
1 2 3 4 5 6 7 | public IActionResult CacheGetString() { string value = _distributedCache.GetString("date"); return View(); } |
Remove
Key değeri verilen datayı silen metottur.
1 2 3 4 5 6 7 | public IActionResult CacheRemove() { _distributedCache.Remove("date"); return View(); } |
Set
Cache’de binary olarak data tutmamızı sağlayan fonksiyondur.
1 2 3 4 5 6 7 8 | public IActionResult CacheSet() { byte[] dateByte = Encoding.UTF8.GetBytes(DateTime.Now.ToString()); _distributedCache.Set("date", dateByte); return View(); } |
ya da
1 2 3 4 5 6 7 8 9 10 11 12 | public IActionResult CacheSet() { byte[] dateByte = Encoding.UTF8.GetBytes(DateTime.Now.ToString()); _distributedCache.Set("date", dateByte, new DistributedCacheEntryOptions { AbsoluteExpiration = DateTime.Now.AddSeconds(1200), SlidingExpiration = TimeSpan.FromSeconds(60) }); return View(); } |
Get
Binary olarak tutulan datayı geri binary olarak elde etmemizi sağlayan fonksiyondur.
1 2 3 4 5 6 7 8 | public IActionResult CacheGet() { byte[] dateByte = _distributedCache.Get("date"); string value = Encoding.UTF8.GetString(dateByte); return View(); } |
Dosya Cacheleme
Aşağıda resim dosyasının cachelendiği örnek kod bloğunu inceleyebilirsiniz.
1 2 3 4 5 6 7 8 9 | public IActionResult CacheFile() { string path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/resim.jpg"); byte[] fileByte = System.IO.File.ReadAllBytes(path); _distributedCache.Set("file", fileByte); return View(); } |
Cachelenmiş Dosyayı Okuma









Yorum Yap