﻿ Redis Yazı Serisi 4 – On-demand Caching, Pre-populate Caching, Absolute Time ve Sliding Time Kavramları – Yazılım Mimarileri ve Tasarım Desenleri Üzerine
Yazar: Gençay · 12 Nisan 2020
Redis yazı serisinin bu dördüncü makalesinde belirli kavramsal temelleri oturtabilmek amaçlı kalem oynatacak ve On-demand Caching, Pre-populate Caching ve Sliding Time kavramlarına açıklık getirmeye çalışacağız.
On-demand Caching Nedir?
Cachelenecek dataların kullanıcıdan talep geldikten sonra cachelenmesidir.
Pre-populate Caching Nedir
Cachelenecek dataların uygulama ayağa kaldırılır kaldırılmaz cachelenmesidir. Genellikle static veriler tercih edilir. Örneğin; veritabanındaki ‘şehirler’ tablosu verisel açıdan güncellenmesi neredeyse mümkün olmayan bir içeriğe sahip olduğu için ilk kullanıcıdan gelecek isteklerinde direkt olarak cacheden karşılanması performans açısından doğru hamle olacaktır.
Herşeyin bir ömrü olduğu gibi cachelenecek datalarında ne kadar süreliğine cache’de tutulacağına dair de belirli bir süre mevcuttur. Ve tabi ki de bu süreyi kendi irademizle belirleyebiliriz. Cache’de ki verilerin ömrünü belirlemek demek, o süre zarfında tekrar tekrar ilgili cache’i güncel verilerle tazelemek demektir. Dolayısıyla burada cache süresini belirleyebilmek için tercih edebileceğimiz ‘Absolute Time’ ve ‘Sliding Time’ olmak üzere iki yaklaşım mevcuttur.
Absolute Time Nedir?
Cache’de ki datanın ne kadar tutulacağına dair net ömrünün belirtilmesidir. Belirtilen ömür sona erdiğinde cache direkt olarak temizlenir.
Sliding Time Nedir?
Cachelenmiş datanın memory’de belirtilen süre periyodu zarfında tutulmasını belirtir. Belirtilen süre içerisinde cache’e yapılan erişim neticesinde de datanın ömrü bir o kadar uzatılacaktır. Aksi taktirdir belirtilen süre zarfında bir erişim söz konusu olmazsa cache temizlenecektir.
Tabi burada aralıklı erişimler neticesinde cache’de tutulan datanın uzun vadeli tutulması, süreçte veritanında olasılığı yüksek olan veri modifikasyonlarının neticesindeki güncel verilerle cache’in tazelenmesini engelleyeceğinden dolayı bayat verilere sebebiyet verebilir. İşte böyle bir durumu engelleyebilmek için cachelenmiş datanın ömrünü hem Absolute hem de Sliding yaklaşımlarıyla belirlememiz daha doğru olacaktır.
Yukarıdaki şemada da görüldüğü üzere durumu senaryotik örneklendirirsek eğer; Sliding Time olarak 2 dk, Absolute Time olarak ise 10 dk verilen datanın cache’de ki ömrü; 2 dk içerisinde erişim isteği geldiği taktirde 2 dk uzatılacaktır. Bu uzatlamalar totalde 10 dk kadar olacaktır. Eğer 2dk içerisinde bir istek gelmezse ya da sliding son periyotta ise artık cache geri dönüşsüz silinecektir.
Etiketler: Absolute TimeOn-demand CachingPre-populate CachingSliding Time Kavramları
[…] Redis Yazı Serisi 4 – On-demand Caching, Pre-populate Caching, Absolute Time ve Sliding Time … […]
Sonraki yazı Redis Yazı Serisi 5 – Asp.NET Core’da In-Memory Cache Kullanımı
Önceki yazı Redis Yazı Serisi 3 – Distributed Caching Nedir?
Ağustos 2020 (13)