springboot-整合caffeine

springboot-整合caffeine

起男 1,426 2021-06-03

springboot-整合caffeine

caffeine是基于java8的高性能缓存库。并且在spring5之后,spring官方放弃了guava,而使用caffeine作为默认缓存组件

本地缓存由于是存储在内存中,数据的读取速度是非常快的

依赖

<dependency>
	<groupId>com.github.ben-manes.caffeine</groupId>
	<artifactId>caffeine</artifactId>
</dependency>

配置类

@Bean
Cache<String,Object> cache(){
    return Caffeine.newBuilder()
            //设置最后一次写入或访问后经过或访问,经过固定时间过期
            .expireAfterWrite(60, TimeUnit.SECONDS)
            //初始缓存空间大小
            .initialCapacity(100)
            //缓存最大条数
            .maximumSize(1000)
            .build();
}

配置说明

配置项类型描述
initialCapacityinteger初始的缓存空间大小
maximumSizelong缓存的最大条数
maximumWeightlong缓存的最大权重
expireAfterAccessduration最后一次写入或访问,经过多少时间过期
expireAfterWriteduration最后一次写入后,经过多少时间过期
refreshAfterWriteduration创建缓存或者最近一次更新缓存后,经过多久刷新缓存
weakKeysboolean打开key的弱引用
weakValuesboolean打开value的弱引用
softValuesboolean打开value的软引用
recordStats-开发统计功能

注意:

  • weakValues和softValues不能同时使用
  • maximumSize和maximumWeight不可同时使用
  • expireAfterWrite和expireAfterAccess同时存在时,以expireAfterWrite为准

使用

import com.github.benmanes.caffeine.cache.Cache;

@Autowired
private Cache cache;

常用方法:

  • getIfPresent:获取缓存中的数据
  • put:把数据存入缓存