Caffeine for Java:高性能内存缓存
\n\n它是什么以及为什么需要它?
\nCaffeine 是一个用 Java 编写的高性能内存缓存库。它由 Ben Manes 创建,是 JVM 最快的缓存实现之一。Caffeine 的设计考虑了现代多线程需求,并提供了丰富的 API 来管理缓存中对象的生命周期。
\n为什么需要 Caffeine?在任何处理数据的应用程序中,经常会出现重复请求相同数据的情况。与其每次都执行昂贵的操作(如数据库查询、外部 API 调用、复杂计算),不如将结果保存在缓存中。Caffeine 使用 W-TinyLFU(窗口最小最不经常使用)算法,以最高效的方式实现这一点,该算法确保了高精度的元素淘汰和最小的开销。
\n该库被广泛应用于 Spring Framework(从 5.0 版本开始)等大型项目中,作为标准的缓存实现。Caffeine 支持异步加载、自动更新条目、统计信息以及多种淘汰策略(基于时间、大小、引用)。
\n安装
\nCaffeine 通过 Maven Central 分发。要使用它,请将依赖项添加到您的 pom.xml(Maven)或 build.gradle(Gradle)中。
Maven
\n<dependency>\n <groupId>com.github.ben-manes.caffeine</groupId>\n <artifactId>caffeine</artifactId>\n <version>3.1.8</version>\n</dependency>\n\n Gradle
\nimplementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'\n\n 要获取最新版本,请查看 Maven Central。
\n快速入门
\n创建和使用 Caffeine 缓存的最小示例:
\nimport com.github.benmanes.caffeine.cache.Cache;\nimport com.github.benmanes.caffeine.cache.Caffeine;\n\nimport java.util.concurrent.TimeUnit;\n\npublic class QuickStart {\n public static void main(String[] args) {\n // 1. 创建一个最大容量为 100 个元素的缓存\n // 并且条目在最后一次访问后 10 分钟过期\n Cache<String, String> cache = Caffeine.newBuilder()\n .maximumSize(100)\n .expireAfterAccess(10, TimeUnit.MINUTES)\n .build();\n\n // 2. 放入一个值\n cache.put("key1", "Hello, Caffeine!");\n\n // 3. 获取一个值\n String value = cache.getIfPresent("key1");\n System.out.println(value); // 输出:Hello, Caffeine!\n\n // 4. 使用加载函数获取值(如果键不存在)\n String loadedValue = cache.get("key2", k -> "Loaded: " + k);\n System.out.println(loadedValue); // 输出:Loaded: key2\n }\n}\n 主要方法和类
\n让我们看看 Caffeine 的关键类和主要方法。用于配置的主要类是 Caffeine,而用于操作缓存的类是 Cache、LoadingCache 和 AsyncCache。
1. Caffeine.newBuilder()
\n签名: public static Caffeine<K, V> newBuilder()
功能: 创建一