1. Caffeine的基础使用
借鉴了https://www.jianshu.com/p/9ee291147617
1.1 简介
Caffeine是基于Java 8的高性能,接近最佳的缓存工具库。Caffeine使用Google Guava启发的API提供内存缓存。所以它的使用成本较低,跟Guava的API大致一致。
它主要有以下几个功能:
-
自动将条目自动加载到缓存中,可以选择同步或异步加载
-
基于频率和新近度超过最大值时基于大小的逐出
-
自上次访问或上次写入以来测得的基于时间的条目到期
-
发生第一个陈旧的条目请求时,异步刷新
-
键自动包装在弱引用中
-
值自动包装在弱引用或软引用中
-
逐出(或以其他方式删除)条目的通知
-
写入通知
-
缓存访问统计信息的
1.2 常见API
Cache分为LoadingCache(同步缓存),AsyncLoadingCache(异步缓存)
- pom依赖
<dependency>
<groupId>com.github.benmanes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.8.5</version>
</dependency>
1.2.1 人工加载策略
Cache<Object, Object> cache = Caffeine.newBuilder()
.expireAfterWrite(1, TimeUnit.SECONDS)
.expireAfterAccess(1, TimeUnit.SECONDS)
.maximumSize(10)//最大条数
.build();//定义cache
User user1=(User) cache.get(id, v-> userDao.getOne(id