学习使用本地缓存Caffeine

认识缓存组件Caffeine

Caffeine 是基于Java 8,基于进程内存的的高性能缓存库。

Caffeine的内部实现机制可以参考相关文档,我们现在学习如何使用,其实在仔细阅读Caffeine暴露的API文档后,也能大概猜测出它是怎么实现了。

首先仔细观察Caffeine类的说明,这是一个工厂类,提供以不同构建策略生成Cache容器的方法。

Caffine 类

一个组合了以下特性的Cache、LoadingCache、AsyncCache和AsyncLoadingCache实例的构造器(Builder)。

  • 自动将缓存项(entries)加载到缓存中,视需要异步加载
  • 基于缓存项数量的回收策略
  • 基于缓存项过期的回收策略
  • 当请求一个过期的缓存项时进行异步刷新
  • 键自动封装在弱引用中
  • 值自动封装在弱引用或软引用中
  • 写操作可以广播到外部资源
  • 缓存项被淘汰或被删除时的通知机制
  • 缓存积累访问信息的统计

这些功能都是可选的,可以都使用它们或者都不使用它们来创建缓存。默认情况下,Caffeine创建的缓存实例不会执行任何类型的回收。

应用案例:

LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterWrite(Duration.ofMinutes(10))
.removalListener((Key key, Graph graph, RemovalCause cause) ->
System.out.printf("Key %s was removed (%s)%n", key, cause))
.build(key -> createExpensiveGraph(key));

<< · Back Index ·>>

发表回复

相关推荐

有关中国古代京剧常识

(一)京剧的形成 京剧是在18世纪下半叶经徽戏、秦腔、汉调的交融,并借鉴吸收昆曲、京腔之长而形成的。 徽剧是京剧的前身。 ...

· 2分钟前

营养不上火喝冬瓜汤, 教你做九道最受欢迎的冬瓜汤, 鲜嫩可口美味

冬瓜味甘、淡、性凉,入肺、大肠、小肠、膀胱经。有润肺生津,化痰止渴,利尿消肿,清热祛暑,解毒排脓。可用于暑热口渴,下 ...

· 3分钟前

易经的智慧:龙马负图

一、河图的内容 中华文化的根源在河洛,即黄河洛水,河洛文化的标志是“河图”“洛书”。“河图”指的是黄河出现的龙马负图,“洛书 ...

· 6分钟前

到底什么是当下?

真正的当下和“时间”、“空间”无关, 它是生命的“本来面目” 到底什么是当下? 对于头脑主义者来说,当下是指“此时”、“此地” ...

· 8分钟前

六位港片里著名“打星”,角色令人过目不忘,鲜有人知道他们真名

上世纪80-90年代,是香港电影黄金时代,当时香港作为亚洲电影中心,吸引了大批武术精英。

· 9分钟前