Redis ile Önbellekleme ve Küme İşletimi Rehberi
Beceri rehberi

Redis ile Önbellekleme ve Küme İşletimi Rehberi

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 4 dk okuma

Redis ile önbellekleme desenleri, veri yapıları, kalıcılık, çoğaltma, Sentinel, Cluster ve ElastiCache işletimi: uygulamaya dönük adım adım yol haritası.

Önbellekleme neden yapılır?

Önbellekleme, sık okunan ve üretilmesi pahalı veriyi hızlı bir katmanda tutarak ana veritabanının yükünü ve yanıt süresini azaltma tekniğidir. Redis, veriyi bellekte tuttuğu için okuma ve yazmada çok düşük gecikme sağlar; bu yüzden önbellek katmanı olarak en yaygın seçeneklerden biridir.

Her veri önbelleğe uygun değildir. İyi adaylar; sık okunan, nadiren değişen, hesaplanması ya da sorgulanması maliyetli verilerdir: ürün katalogları, oturum bilgileri, yapılandırmalar, pahalı sorguların sonuçları. Çok sık değişen ve her zaman güncel olması gereken veriler (örneğin hesap bakiyesi) için önbellek yanlış sonuç gösterme riski taşır.

Redis veri yapıları: doğru yapıyı seçmek

Redis yalnızca anahtar-değer deposu değildir; farklı problemlere uygun veri yapıları sunar.

  • Dize (string): basit önbellek değerleri ve sayaçlar.
  • Karma (hash): bir nesnenin alanlarını tek anahtar altında tutmak.
  • Liste: kuyruklar ve son olayların listesi.
  • Küme (set): benzersiz öğe koleksiyonları, üyelik kontrolleri.
  • Sıralı küme (sorted set): puana göre sıralı veriler, lider tabloları.

Doğru yapıyı seçmek hem bellek kullanımını hem de işlem hızını etkiler. Örneğin bir kullanıcı nesnesini bütün olarak tek dizeye serileştirmek yerine karma olarak tutmak, tek bir alanın güncellenmesini kolaylaştırır. Anahtar adlandırma düzeni (alan ön eki, nesne kimliği) ve geçerlilik süresi (TTL) tanımı da baştan planlanmalıdır.

Önbellek desenleri: ne zaman yazılır, ne zaman silinir?

Önbellekleme tek bir yöntem değil, farklı desenlerdir. En yaygını kenara önbellek (cache-aside) desenidir: uygulama önce önbelleğe bakar, bulamazsa veritabanından okur ve sonucu önbelleğe yazar. Doğrudan yazma (write-through) desenlerinde ise yazma hem önbelleğe hem veritabanına yapılır.

Asıl zor kısım geçersiz kılmadır, yani veri değiştiğinde eski kopyanın temizlenmesi. Süre sonu (TTL) basit bir güvenlik ağıdır; kritik verilerde ise değişiklik anında ilgili anahtarın silinmesi gerekir. Dikkat edilecek bir diğer risk, popüler bir anahtarın süresi dolduğunda çok sayıda isteğin aynı anda veritabanına yönelmesidir (cache stampede). Süreleri rastgele dağıtmak ve yenilemeyi tek bir istekle sınırlamak bu riski azaltır.

Kalıcılık, çoğaltma ve Sentinel

Redis veriyi bellekte tuttuğu için sunucu yeniden başladığında verinin ne olacağına karar vermelisiniz. Anlık görüntü (snapshot) belirli aralıklarla diske yedek alır, ekleme günlüğü (append-only file) ise her yazma işlemini kaydeder; ikisi birlikte de kullanılabilir. Saf önbellek kullanımında kalıcılık gerekmeyebilir; Redis'i birincil veri deposu olarak kullanıyorsanız gereklidir.

Çoğaltma (replication), bir ana düğümün verisini bir ya da daha fazla kopyaya yansıtarak okuma kapasitesini artırır ve arızaya karşı yedek sağlar. Sentinel ise ana düğüm çöktüğünde bunu algılayıp bir kopyayı otomatik olarak ana düğüme yükselten ve istemcilere yeni adresi bildiren bileşendir. Böylece manuel müdahale olmadan erişilebilirlik korunur.

Redis Cluster, bellek yönetimi ve izleme

Veri tek bir makinenin belleğine sığmadığında Redis Cluster, anahtarları birden çok düğüm arasında bölüşterek yatay ölçekleme sağlar. Bunun bedeli, çoklu anahtar işlemlerinde anahtarların aynı bölümde olması gerektiği gibi sınırlamalardır; anahtar tasarımınız buna göre yapılmalıdır.

Bellek dolduğunda hangi anahtarların atılacağını belirleyen çıkarma politikası (eviction policy) seçilmelidir; önbellek için genellikle en az kullanılanı atan politikalar tercih edilir. İzlemede bellek kullanımı, önbellek isabet oranı, bağlantı sayısı, çoğaltma gecikmesi ve yavaş komutlar takip edilir. Güvenlik için ağ erişimini kısıtlayın, kimlik doğrulamayı açın ve gerektiğinde aktarım şifrelemesi kullanın.

Yönetilen hizmet: Amazon ElastiCache

Redis'i kendiniz işletmek yerine bulut sağlayıcının yönetilen hizmetini kullanabilirsiniz. Amazon ElastiCache, kurulum, yama, yedekleme ve arıza geçişini sizin yerinize üstlenir. Burada dikkat edilecek kararlar şunlardır: hangi önbellek motorunun seçileceği, kümenin kaç bölüm ve kopyadan oluşacağı, hangi alt ağlarda ve hangi güvenlik kurallarıyla çalışacağı.

Yönetilen hizmet işletim yükünü azaltsa da önbellek desenlerinin doğru tasarlanması, anahtar planı ve geçersiz kılma stratejisi sizin sorumluluğunuzda kalır. Performans ve izleme metrikleri üzerinden isabet oranını ve gecikmeyi düzenli kontrol edin.

Örnek akış: ürün detay sayfasını önbelleğe almak

Örneğin yoğun okunan bir ürün detay sayfasının verisini önbelleğe alacaksınız. Önce anahtar adını belirleyin: alan ön eki ile ürün kimliğini birleştirmek hem okunabilir hem de silinebilir bir düzen sağlar. İstek geldiğinde uygulama anahtara bakar; varsa doğrudan döner, yoksa veritabanından okuyup sonucu bir geçerlilik süresiyle önbelleğe yazar.

Ürün güncellendiğinde iki yol vardır: ilgili anahtarı silmek ya da yeni değerle yeniden yazmak. Silmek daha basittir, çünkü bir sonraki okuma değeri tazeler. Sonra isabet oranını izleyin; düşük kalıyorsa neyin önbelleğe alındığını ve sürenin uygun olup olmadığını gözden geçirin. Sık yapılan hatalar şunlardır: anahtar düzeni olmadan rastgele adlandırma, süre koymadan sınırsız veri biriktirmek ve bellek dolduğunda hangi anahtarların atılacağını belirlememek.

Mindset programlarında bu beceriyi nerede çalışırsınız?

Mindset kataloğunda iki ilgili eğitim vardır. Redis İşletimi ve Kümeleme eğitimi şu modüllerden oluşur: Redis Mimarisi ve Veri Yapıları, Kalıcılık ve Yedekleme, Çoğaltma ve Sentinel, Redis Cluster ve Ölçekleme, Bellek Yönetimi ve Performans, İzleme, Güvenlik ve Arıza Senaryoları.

Amazon ElastiCache ile Önbellekleme Stratejileri eğitimi ise Önbellekleme Temelleri ve Karar Kriterleri, Motor Seçimi ve Veri Yapıları, Küme Mimarisi ve Erişilebilirlik, Önbellek Desenleri, Güvenlik ve Erişim Yönetimi ile Performans, İzleme ve Optimizasyon Projesi modüllerini içerir. Dönem ayrıntıları eğitim sayfalarında yayımlanır.

İlgili Mindset programı

Redis İşletimi ve Kümeleme

Sık sorulanlar

Sık sorulan sorular

Redis'i hem önbellek hem veritabanı olarak kullanabilir miyim?

Teknik olarak evet, ancak amaçlar farklıdır. Önbellek kaybolsa da kaynak veri başka yerde durur. Birincil depo olarak kullanıyorsanız kalıcılık, yedekleme ve çoğaltma ayarlarını bu ihtiyaca göre yapılandırmanız gerekir. Pratikte pek çok ekip önbellek ve oturum verisi için Redis'i, kalıcı iş verisi için ilişkisel bir veritabanını tercih eder; böylece bellek dolsa bile kritik kayıt kaybolmaz.

Önbellekteki eski veri sorununu nasıl çözerim?

Verinin ne kadar güncel olması gerektiğine göre bir süre sonu belirleyin; kritik veriler değiştiğinde ilgili anahtarı hemen silin ya da yenileyin. Hiç eskimemesi gereken veriyi önbelleğe almamak da geçerli bir karardır.

Sentinel ile Cluster arasındaki fark nedir?

Sentinel yüksek erişilebilirlik sağlar: ana düğüm çökerse bir kopya devralır. Cluster ise veriyi birden çok düğüme bölerek ölçekleme sağlar ve kendi arıza geçişini de yönetir. Veri tek makineye sığıyorsa Sentinel yeterli olabilir.

Önbellek isabet oranı neyi gösterir?

Okuma isteklerinin kaçının önbellekten karşılandığını gösterir. Düşükse anahtar tasarımı, süre ayarı ya da neyin önbelleğe alındığı gözden geçirilmelidir. Tek başına hedef bir sayı yoktur; yanıt süresi ve veritabanı yüküyle birlikte yorumlanır.

Redis ile Önbellekleme ve Küme İşletimi Nasıl Yapılır?