Cachningsstrategier

Optimera kod i Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Vad är cachning?

Cachning liknar att ha sina vanligaste köksredskap framme på bänken istället för i skåpet – åtkomsten går snabbare, men utrymmet är begränsat

Vanliga saker att cacha:

  • Databasfrågeresultat
  • API-svar
  • Kostsamma beräkningar
  • Andra resursintensiva operationer
Optimera kod i Java

Minnescachning i 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);
    }
}
Optimera kod i Java

Policyer för cachevräkning

  • LRU (Least Recently Used)
  • LFU (Least Frequently Used)
  • FIFO (First In, First Out)
  • Tidsbaserad utgång
  • Och mer!
Optimera kod i Java

Redis för distribuerad cachning

Vad är Redis:

  • Minnesintern datalager/cache
  • Utmärkt som distribuerad cache
  • Stöder många datastrukturer
  • Många Java-klientbibliotek – ett exempel är Jedis

Screenshot 2025-05-14 at 6.59.29 PM.png

Optimera kod i Java

Använda Redis med Jedis

import redis.clients.jedis.Jedis;

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

Ytterligare funktioner:

  • Automatisk utgång av cachade objekt
  • Klusterstöd
Optimera kod i Java

Implementera en tidsbaserad cache med 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);
    }
}
Optimera kod i Java

Sammanfattning

  • Cachning lagrar beräknade resultat för att undvika omberäkning
  • Effektivt för kostsamma operationer och ofta efterfrågad data
  • Använd lämpliga vräkningspolicyer för att hantera minnet
  • Överväg distribuerad cachning för flersервeraplikationer (t.ex. Redis med Jedis)
Optimera kod i Java

Nu kör vi en övning!

Optimera kod i Java

Preparing Video For Download...