Caffeine 是java中的高性能本地缓存,提供了丰富的缓存功能。Caffeine 的目标是提供一个高吞吐量、低延迟、并发友好的缓存实现。
特点
- 高性能:Caffeine 是基于内存的本地缓存,访问速度非常快,并且在高并发环境下表现优秀。
- 低延迟:由于数据直接存储在应用程序的本地内存中,访问延迟几乎为零。
- 近乎零GC开销:设计上非常高效,垃圾回收(GC)开销非常小。
- 配置灵活:支持多种缓存失效策略,如基于时间的过期、基于容量的过期等。
- 易用性:简单易用的API,非常适合在Java应用程序中快速集成。
缓存策略配置
Caffeine 提供了多种缓存策略和配置选项,可以灵活地满足各种需求:
- 缓存过期策略:写入后过期expireAfterWrite、访问后过期expireAfterAccess
- 容量配置
- 自定义缓存加载:同步加载、异步加载
- 统计信息:监控缓存的使用情况和性能指标
使用
<dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId><version>3.0.4</version> <!-- 请根据实际需要选择版本 --> </dependency>
private static Cache<String, String> localCache = Caffeine.newBuilder().initialCapacity(5000).maximumSize(100000).expireAfterWrite(60, TimeUnit.SECONDS).softValues().build();
Caffeine和Redis对比
Redis |
Caffeine | |
---|---|---|
概述 |
|
|
优点 |
|
|
缺点 |
|
|
使用场景 |
|
|
联系:
一般将两者结合起来,形成一二级缓存。使用流程大致如下:
- 1.一级缓存:先去本地缓存caffeine中查找数据(本地)
- 2.二级缓存:如果没有的话,去redis中查找数据(远程)
- 3.数据库:都没有,再去数据库中查找数据(磁盘)