缓存策略

Java 代码优化

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

什么是缓存?

缓存就像把常用食材放在台面而非橱柜——取用更快,但台面空间有限

常见缓存对象:

  • 数据库查询结果
  • API 响应
  • 高开销计算
  • 其他资源密集型操作
Java 代码优化

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);
    }
}
Java 代码优化

缓存淘汰策略

  • LRU(最近最少使用)
  • LFU(最少频率使用)
  • FIFO(先进先出)
  • 基于时间的过期
  • 还有更多
Java 代码优化

用于分布式缓存的 Redis

什么是 Redis:

  • 内存数据存储/缓存
  • 作为分布式缓存表现出色
  • 支持多种数据结构
  • 多个 Java 客户端库——如 Jedis

Screenshot 2025-05-14 at 6.59.29 PM.png

Java 代码优化

用 Jedis 使用 Redis

import redis.clients.jedis.Jedis;

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

附加特性:

  • 缓存项自动过期
  • 集群支持
Java 代码优化

用 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);
    }
}
Java 代码优化

小结

  • 缓存存储计算结果以避免重复计算
  • 适用于高开销操作和高频访问数据
  • 实施合适的淘汰策略以管理内存
  • 多服务器应用考虑分布式缓存(如用 Jedis 的 Redis)
Java 代码优化

Vamos praticar!

Java 代码优化

Preparing Video For Download...