caffeine尝试
3.00版本之后就是jdk11,之前是8
Caffeine是基于Java 8的高性能,接近最佳的缓存工具库。Caffeine使用Google Guava启发的API提供内存缓存。所以它的使用成本较低,跟Guava的API大致一致。
它主要有以下几个功能:
-
自动将条目自动加载到缓存中,可以选择同步或异步加载
-
基于频率和新近度超过最大值时基于大小的逐出
-
自上次访问或上次写入以来测得的基于时间的条目到期
-
发生第一个陈旧的条目请求时,异步刷新
-
键自动包装在弱引用中
-
值自动包装在弱引用或软引用中
-
逐出(或以其他方式删除)条目的通知
-
写入通知
依赖如下:
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.9.2</version>
</dependency>
Cache<String, String> cache = Caffeine.newBuilder()
// 数量上限
.maximumSize(1024)
// 过期机制
.expireAfterWrite(3000, TimeUnit.MILLISECONDS)
.softValues()
// 剔除监听,注意这个剔除监听时间不是及时的,是懒的。
.removalListener((RemovalListener<String, String>) (key, value, cause) ->
System.out.println("key:" + key + ", value:" + value + ", 删除原因:" + cause.toString()))
.build();
// 将数据放入本地缓存中
cache.put("username", "afei");
cache.put("password", "123456");
System.out.println(cache.getIfPresent("username"));
System.out.println(cache.getIfPresent("password"));
System.out.println(cache.getIfPresent("passwor123d"))