Caffeine学习笔记
作者:京东工业 孙磊
一、认识Caffeine
1、Caffeine是什么?
Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库, 也是SpringBoot内置的本地缓存实现。
2、Caffeine提供了灵活的构造器去创建一个拥有下列特性的缓存:
•自动加载条目到缓存中,可选异步方式
•可以基于大小剔除
•可以设置过期时间,时间可以从上次访问或上次写入开始计算
•异步刷新
•keys自动包装在弱引用中
•values自动包装在弱引用或软引用中
•条目剔除通知
•缓存访问统计
3、核心类和参数
核心工具类:Caffeine是创建高性能缓存的基类。
核心参数:
maximumSize
:缓存最大值
maximumWeight
:缓存最大权重,权重和最大值不能同时设置
initialCapacity
:缓存初始容量
expireAfterWriteNanos
:在写入多少纳秒没更新后过期
expireAfterAccessNanos
:在访问多少纳秒没更新后过期
refreshAfterWriteNanos
:写入多少纳秒没更新后更新
二、数据加载
Caffeine提供了四种缓存添加策略
1、手动加载
public static void demo() {
Cache<String, String> cache =
Caffeine.newBuilder()
.expireAfterAccess(Duration.ofMinutes(1))
.maximumSize(100)
.recordStats()
.build();
// 插入数据
cache.put("a", "a");
// 查询某个key,如果没有返回空
String a = cache.getIfPresent("a");
System.out.println(a);
// 查找缓存,如果缓存不存在则生成缓存元素, 如果无法生成则返回null
String b = cache.get("b", k -> {
System.out.println("begin query ..." + Thread.currentThread().getName()