Strategie ukládání do mezipaměti

Optimalizace kódu v Javě

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Co je mezipaměť?

Mezipaměť je jako mít nejpoužívanější suroviny na kuchyňské lince místo ve skříni – přístup je rychlejší, ale místo je omezené

Do mezipaměti se běžně ukládají:

  • Výsledky databázových dotazů
  • Odpovědi API
  • Výsledky náročných výpočtů
  • Jiné operace náročné na zdroje
Optimalizace kódu v Javě

Mezipaměť v paměti v Javě

// 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);
    }
}
Optimalizace kódu v Javě

Zásady vypršení platnosti mezipaměti

  • LRU (Least Recently Used)
  • LFU (Least Frequently Used)
  • FIFO (First In, First Out)
  • Vypršení platnosti na základě času
  • A další!
Optimalizace kódu v Javě

Redis pro distribuované ukládání do mezipaměti

Co je Redis:

  • Datové úložiště/mezipaměť v paměti
  • Vyniká jako distribuovaná mezipaměť
  • Podporuje mnoho datových struktur
  • Mnoho klientských knihoven pro Javu – příkladem je Jedis

Snímek obrazovky Redis

Optimalizace kódu v Javě

Použití Redis s Jedis

import redis.clients.jedis.Jedis;

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

Další funkce:

  • Automatické vypršení platnosti položek v mezipaměti
  • Podpora clusteru
Optimalizace kódu v Javě

Mezipaměť s časovým omezením pomocí 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);
    }
}
Optimalizace kódu v Javě

Shrnutí

  • Mezipaměť ukládá výsledky výpočtů a zamezuje jejich opakování
  • Vhodná pro náročné operace a často přistupovaná data
  • Implementujte správné zásady vypršení platnosti pro správu paměti
  • Pro aplikace s více servery zvažte distribuovanou mezipaměť (např. Redis s Jedis)
Optimalizace kódu v Javě

Pojďme procvičovat!

Optimalizace kódu v Javě

Preparing Video For Download...