Web Geliştirme

Redis ile Caching Stratejileri

06 Dec 2025
5 dakika okuma
İninia Teknoloji

Redis, açık kaynaklı, in-memory veri yapısı deposu olarak web uygulamalarında performans optimizasyonunun temel taşlarından biridir. Saniyede milyonlarca işlem kapasitesi ve mikrosaniye seviyesinde gecikme süreleriyle, modern uygulamaların vazgeçilmez bileşeni haline gelmiştir.

Redis Nedir?

Redis (Remote Dictionary Server), bellek içi (in-memory) çalışan bir NoSQL veritabanıdır. Temel olarak key-value store olarak tasarlanmış olsa da, zengin veri yapıları desteğiyle çok yönlü kullanım senaryolarına olanak tanır.

Redis Veri Yapıları

  • Strings: En temel veri tipi, metin veya binary veri
  • Lists: Sıralı string koleksiyonları, kuyruk yapıları için ideal
  • Sets: Benzersiz string koleksiyonları, üyelik kontrolü
  • Sorted Sets: Skor ile sıralanmış setler, liderlik tabloları
  • Hashes: Field-value çiftleri, nesne depolama
  • Streams: Log benzeri veri yapıları, event sourcing
  • Bitmaps: Bit seviyesinde operasyonlar, kullanıcı aktivite takibi

Caching Stratejileri

1. Cache-Aside (Lazy Loading)

En yaygın strateji. Veri önce cache'te aranır, yoksa veritabanından çekilir ve cache'e yazılır.

// Pseudo kod
data = redis.get(key)
if data is null:
    data = database.query()
    redis.setex(key, ttl, data)
return data

2. Write-Through

Veri hem veritabanına hem cache'e aynı anda yazılır. Tutarlılık garantisi sağlar.

3. Write-Behind (Write-Back)

Veri önce cache'e yazılır, ardından asenkron olarak veritabanına aktarılır. Yazma performansı yüksek.

4. Refresh-Ahead

Sık erişilen verileri TTL dolmadan önce proaktif olarak yeniler.

Kullanım Senaryoları

Session Yönetimi

Web uygulamalarında oturum verilerinin depolanması. Hızlı erişim ve kolay ölçekleme.

Rate Limiting

API çağrı sınırlandırma. INCR ve EXPIRE komutlarıyla sliding window implementasyonu.

Gerçek Zamanlı Liderlik Tabloları

Sorted Sets ile oyun ve yarışma sıralamaları. O(log(N)) karmaşıklıkla sıralama.

Pub/Sub Mesajlaşma

Gerçek zamanlı bildirimler ve event broadcasting. WebSocket backend'i olarak kullanım.

Full-Page Caching

Statik veya yarı-statik sayfaların tam olarak cache'lenmesi.

Redis Cluster ve Yüksek Erişilebilirlik

  • Redis Sentinel: Otomatik failover ve monitoring
  • Redis Cluster: Yatay ölçekleme, data sharding
  • Replication: Master-replica yapılandırması

Performans İpuçları

  1. Uygun TTL değerleri belirleyin
  2. Key naming convention oluşturun
  3. Pipeline kullanarak batch işlemler yapın
  4. Büyük key'lerden kaçının (memory fragmentation)
  5. Lazy expiration yerine aktif expiration tercih edin
  6. Memory policy'leri doğru yapılandırın (maxmemory-policy)

Laravel/PHP ile Redis

// Cache facade
Cache::store('redis')->put('key', 'value', 600);
$value = Cache::store('redis')->get('key');

// Redis facade
Redis::set('key', 'value');
Redis::expire('key', 600);

Monitoring ve Debugging

  • Redis CLI: redis-cli monitor, info stats
  • RedisInsight: GUI monitoring tool
  • APM entegrasyonları: New Relic, Datadog

Redis, doğru kullanıldığında uygulama performansını dramatik şekilde artırabilir. Cache stratejinizi iş gereksinimlerinize göre belirleyin ve düzenli olarak cache hit ratio'nuzu izleyin.

İninia Teknoloji

İstanbul Teknik Üniversitesi ARI Teknokent'te kurulu Ininia Teknoloji, 12+ yıllık deneyimle AR/VR, yapay zeka ve mobil uygulama alanlarında yenilikçi çözümler sunmaktadır.

Projeniz için profesyonel destek mi arıyorsunuz?

12+ yıllık deneyimimizle dijital dönüşümünüzü hızlandıralım.

Ücretsiz Görüşme Talep Et