还在用 Guava Cache?它才是 Java 本地缓存之王!,2024年最新滴滴 战略 面试

Caffeine.weakValues()和Caffeine.softValues()不可以一起使用。

3. 移除事件监听

Cache<String, Object> cache = Caffeine.newBuilder()

.removalListener((String key, Object value, RemovalCause cause) ->

System.out.printf(“Key %s was removed (%s)%n”, key, cause))

.build();

4. 写入外部存储

CacheWriter 方法可以将缓存中所有的数据写入到第三方。

LoadingCache<String, Object> cache2 = Caffeine.newBuilder()

.writer(new CacheWriter<String, Object>() {

@Override public void write(String key, Object value) {

// 写入到外部存储

}

@Override public void delete(String key, Object value, RemovalCause cause) {

// 删除外部存储

}

})

.build(key -> function(key));

如果你有多级缓存的情况下,这个方法还是很实用。(搜索公众号Java知音,回复“2021”,送你一份Java面试题宝典)

注意:CacheWriter不能与弱键或AsyncLoadingCache一起使用。

5. 统计#

与Guava Cache的统计一样。

Cache<String, Object> cache = Caffeine.newBuilder()

.maximumSize(10_000)

.recordStats()

.build();

通过使用Caffeine.recordStats(), 可以转化成一个统计的集合. 通过 Cache.stats() 返回一个CacheStats。CacheStats提供以下统计方法:

  • hitRate(): 返回缓存命中率

  • evictionCount(): 缓存回收数量

  • averageLoadPenalty(): 加载新值的平均时间

3. SpringBoot 中默认Cache-Caffine Cache

SpringBoot 1.x版本中的默认本地cache是Guava Cache。在2.x(Spring Boot 2.0(spring 5) )版本中已经用Caffine Cache取代了Guava Cache。毕竟有了更优的缓存淘汰策略。

下面我们来说在SpringBoot2.x版本中如何使用cache。

1. 引入依赖:

org.springframework.boot

spring-boot-starter-cache

com.github.ben-manes.caffeine

caffeine

2.6.2

2. 添加注解开启缓存支持

添加@EnableCaching注解:

@SpringBootApplication

@EnableCaching

public class SingleDatabaseApplication {

public static void main(String[] args) {

SpringApplication.run(SingleDatabaseApplication.class, args);

}

}

3. 配置文件的方式注入相关参数

properties文件

spring.cache.cache-names=cache1

spring.cache.caffeine.spec=initialCapacity=50,maximumSize=500,expireAfterWrite=10s

或Yaml文件

spring:

cache:

type: caffeine

cache-names:

- userCache

caffeine:

spec: maximumSize=1024,refreshAfterWrite=60s

如果使用refreshAfterWrite配置,必须指定一个CacheLoader.不用该配置则无需这个bean,如上所述,该CacheLoader将关联被该缓存管理器管理的所有缓存ÿ

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值