Önbellekleme stratejileri

Java'da Kod Optimizasyonu

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Önbellekleme nedir?

Önbellekleme, sık kullandığımız malzemeleri dolap yerine tezgâhta tutmaya benzer: erişim daha hızlıdır, ancak tezgâh alanı sınırlıdır

Genelde şunlar önbelleğe alınır:

  • Veritabanı sorgu sonuçları
  • API yanıtları
  • Maliyetli hesaplamalar
  • Diğer kaynak yoğun işlemler
Java'da Kod Optimizasyonu

Java’da bellek içi önbellek

// In-memory cache using HashMap
public class SimpleCache<K, V> {
    private final Map<K, V> cache = new HashMap<>();

    public V get(K key) {
        return cache.get(key);
    }

    public void put(K key, V value) {
        cache.put(key, value);
    }
}
Java'da Kod Optimizasyonu

Önbellek tahliye ilkeleri

  • LRU (En Son En Az Kullanılan)
  • LFU (En Az Sıklıkla Kullanılan)
  • FIFO (İlk Giren İlk Çıkar)
  • Zaman tabanlı sona erme
  • Ve daha fazlası
Java'da Kod Optimizasyonu

Dağıtık önbellek için Redis

Redis nedir:

  • Bellek içi veri deposu/önbellek
  • Dağıtık önbellekte çok başarılıdır
  • Birçok veri yapısını destekler
  • Birçok Java istemcisi vardır – örnek: Jedis

Ekran görüntüsü 14.05.2025 18:59:29.png

Java'da Kod Optimizasyonu

Jedis ile Redis kullanımı

import redis.clients.jedis.Jedis;

// Using Jedis client
Jedis jedis = new Jedis("localhost");
jedis.set("key", "value");
String value = jedis.get("key");

Ek özellikler:

  • Önbellek öğelerinin otomatik süresi dolma
  • Küme (cluster) desteği
Java'da Kod Optimizasyonu

Redis ile zaman tabanlı önbellek

public class RedisTimedCache {
    private final Jedis jedis;

    public RedisTimedCache(String host, int port) {
        this.jedis = new Jedis(host, port);
    }

    public String get(String key) {
        return jedis.get(key);
    }

    public void put(String key, String value, int timeToLiveSeconds) {
        // Sets both the value and expiration time in seconds
        jedis.setex(key, timeToLiveSeconds, value);
    }
}
Java'da Kod Optimizasyonu

Özet

  • Önbellek, yeniden hesaplamayı önlemek için sonuçları saklar
  • Pahalı işlemler ve sık erişilen veriler için etkilidir
  • Belleği yönetmek için uygun tahliye (eviction) ilkeleri uygulayın
  • Çok sunuculu uygulamalar için dağıtık önbelleği düşünün (örn. Jedis ile Redis)
Java'da Kod Optimizasyonu

Haydi pratik yapalım!

Java'da Kod Optimizasyonu

Preparing Video For Download...