Cachingstrategieën

Code optimaliseren in Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Wat is caching?

Cachen is als veelgebruikte ingrediënten op het aanrecht zetten in plaats van in de kast: sneller pakken, maar beperkte ruimte

We cachen typisch:

  • Databasequeryresultaten
  • API-responses
  • Dure berekeningen
  • Andere resource-intensieve operaties
Code optimaliseren in Java

In-memory cachen in 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);
    }
}
Code optimaliseren in Java

Cache-evictionbeleid

  • LRU (Least Recently Used)
  • LFU (Least Frequently Used)
  • FIFO (First In, First Out)
  • Tijdgebaseerde vervaldatum
  • En meer!
Code optimaliseren in Java

Redis voor distributed caching

Wat is Redis:

  • In-memory datastore/cache
  • Uitstekend als distributed cache
  • Ondersteunt veel datastructuren
  • Veel Java-clients; een voorbeeld is Jedis

Screenshot 2025-05-14 at 6.59.29 PM.png

Code optimaliseren in Java

Redis gebruiken met Jedis

import redis.clients.jedis.Jedis;

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

Extra features:

  • Automatische expiratie van cache-items
  • Clusterondersteuning
Code optimaliseren in Java

Een tijdgebaseerde cache met 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);
    }
}
Code optimaliseren in Java

Samenvatting

  • Cache slaat resultaten op om herberekenen te voorkomen
  • Effectief voor dure operaties en vaak opgevraagde data
  • Implementeer goede eviction-beleid om geheugen te beheren
  • Overweeg distributed caching voor multi-server apps (bv. Redis met Jedis)
Code optimaliseren in Java

Laten we oefenen!

Code optimaliseren in Java

Preparing Video For Download...