Strategi caching

Optimasi Kode di Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Apa itu caching?

Caching seperti menaruh bahan masak yang sering dipakai di meja dapur, bukan di lemari—akses lebih cepat, tetapi ruang meja terbatas

Umumnya kita cache:

  • Hasil query basis data
  • Respons API
  • Perhitungan mahal
  • Operasi lain yang intensif sumber daya
Optimasi Kode di Java

Caching dalam memori di Java

// 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);
    }
}
Optimasi Kode di Java

Kebijakan penggusuran cache

  • LRU (Least Recently Used)
  • LFU (Least Frequently Used)
  • FIFO (First In, First Out)
  • Kedaluwarsa berbasis waktu
  • Dan lainnya
Optimasi Kode di Java

Redis untuk caching terdistribusi

Apa itu Redis:

  • Penyimpanan data/cache dalam memori
  • Unggul sebagai cache terdistribusi
  • Mendukung banyak struktur data
  • Banyak library klien Java—contohnya Jedis

Tangkapan layar 2025-05-14 pukul 18.59.29.png

Optimasi Kode di Java

Menggunakan Redis dengan Jedis

import redis.clients.jedis.Jedis;

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

Fitur tambahan:

  • Kedaluwarsa otomatis item cache
  • Dukungan kluster
Optimasi Kode di Java

Menerapkan cache berbasis waktu dengan Redis

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);
    }
}
Optimasi Kode di Java

Ringkasan

  • Caching menyimpan hasil komputasi agar tidak dihitung ulang
  • Efektif untuk operasi mahal dan data yang sering diakses
  • Terapkan kebijakan penggusuran yang tepat untuk mengelola memori
  • Pertimbangkan cache terdistribusi untuk aplikasi multi-server (mis. Redis dengan Jedis)
Optimasi Kode di Java

Ayo berlatih!

Optimasi Kode di Java

Preparing Video For Download...