Strategii de caching

Optimizarea codului în Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Ce este caching-ul?

Caching-ul este ca păstrarea ingredientelor frecvent folosite pe blatul de bucătărie în loc de dulap - accesul este mai rapid, dar spațiul este limitat

Ce se stochează de obicei în cache:

  • Rezultate ale interogărilor de baze de date
  • Răspunsuri API
  • Calcule costisitoare
  • Alte operații intensive pe resurse
Optimizarea codului în Java

Caching în memorie în 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);
    }
}
Optimizarea codului în Java

Politici de evacuare din cache

  • LRU (Least Recently Used)
  • LFU (Least Frequently Used)
  • FIFO (First In, First Out)
  • Expirare bazată pe timp
  • Și altele!
Optimizarea codului în Java

Redis pentru caching distribuit

Ce este Redis:

  • Stocare de date/cache în memorie
  • Excelent ca cache distribuit
  • Suportă multe structuri de date
  • Multe biblioteci client Java - un exemplu este Jedis

Captură de ecran Redis

Optimizarea codului în Java

Utilizarea Redis cu Jedis

import redis.clients.jedis.Jedis;

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

Funcționalități suplimentare:

  • Expirarea automată a elementelor din cache
  • Suport pentru cluster
Optimizarea codului în Java

Cache bazat pe timp cu 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);
    }
}
Optimizarea codului în Java

Rezumat

  • Caching-ul stochează rezultate pentru a evita recalcularea
  • Util pentru operații costisitoare și date frecvent accesate
  • Implementați politici de evacuare pentru gestionarea memoriei
  • Luați în considerare caching-ul distribuit pentru aplicații multi-server (ex. Redis cu Jedis)
Optimizarea codului în Java

Să exersăm!

Optimizarea codului în Java

Preparing Video For Download...