没有合适的资源?快使用搜索试试~ 我知道了~
Caffeine本地缓存的配置与使用
资源推荐
资源详情
资源评论
缓存在日常开发中启动至关重要的作用,由于是存储在内存中,数据的读取速度是非常快的,能大量
减少对数据库的访问,减少数据库的压力。
之前介绍过 Redis 这种 NoSql 作为缓存组件,它能够很好的作为分布式缓存组件提供多个服务间的缓
存,但是 Redis 这种还是需要网络开销,增加时耗。本地缓存是直接从本地内存中读取,没有网络开
销,例如秒杀系统或者数据量小的缓存等,比远程缓存更合适。
Caffeine 是基于 JAVA 8 的高性能缓存库,是当前最优秀的内存缓存框架,不论读还是写的效率都远
高于其他缓存,而且在Spring5开始的默认缓存实现就将Caffeine代替原来的Google Guava
相关介绍
本地缓存
缓存组件Caffeine
Caffeine性能
Caffeine配置说明
参数 类型 描述
initialCapacity integer 设置初始缓存的空间大小
maximumSize long 设置缓存的最大条数
注意:
弱引用:弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程
中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存
软引用:如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不
足了,就会回收这些对象的内存。
maximumWeight long 设置缓存的最大权重
expireAfterAccess duration
最后一次写入或者访问后经过多
久时间过期
refreshAfterWrite duration
最后一次写入后经过多久时间过
期
refreshAfterWrite duration
创建缓存或者最后一次更新缓存
后经过多久时间间隔,刷新缓存
weakKeys boolean 打开key的弱引用
weakValues boolean 打开value的弱引用
softValues boolean 打开value的软引用
recordStats 打开统计功能
weakValues 和 softValues 不可以同时使用。
maximumSize 和 maximumWeight 不可以同时使用。
expireAfterWrite 和 expireAfterAccess 同时存在时,以 expireAfterWrite 为准。
软引用与弱引用
// 弱引用 1
Caffeine.newBuilder().weakKeys().weakValues().build();2
3
// 软引用 4
Caffeine.newBuilder().softValues().build(); 5
SpringBoot集成Caffeine两种方式
直接引入 Caffeine 依赖,然后使用 Caffeine 方法实现缓存,相当于使用原生api
引入 Caffeine 和 Spring Cache 依赖,使用 SpringCache 注解方法实现缓存。SpringCache帮我们封装了
Caffeine pom文件引入
方式一
配置
pom.xml
<dependency>1
<groupId>com.github.ben-manes.caffeine</groupId>2
<artifactId>caffeine</artifactId>3
<version>2.9.3</version>4
</dependency>5
CaffeineConfig
import com.github.benmanes.caffeine.cache.Cache; 1
import com.github.benmanes.caffeine.cache.Caffeine; 2
import org.springframework.context.annotation.Bean; 3
import org.springframework.context.annotation.Configuration; 4
5
import java.util.concurrent.TimeUnit; 6
7
/** 8
* @version 1.0.0 9
* @description: caffeine本地缓存配置 10
* @createDate: 2023/4/27 11:44 11
**/ 12
@Configuration 13
public class CaffeineConfig { 14
@Bean 15
public Cache<String,Object> caffeineCache(){ 16
return Caffeine.newBuilder() 17
// 设置最后一次写入或访问后经过固定时间过期 18
.expireAfterWrite(60, TimeUnit.SECONDS) 19
// 初始的缓存空间大小 20
.initialCapacity(100) 21
剩余11页未读,继续阅读
资源评论
亻木
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功