0
我正在尝试使用咖啡因缓存。如何使用Java为Caffeine缓存创建对象?我现在在我的项目中没有使用任何Spring。如何使用Java创建CaffeineCache对象?
我正在尝试使用咖啡因缓存。如何使用Java为Caffeine缓存创建对象?我现在在我的项目中没有使用任何Spring。如何使用Java创建CaffeineCache对象?
基于Caffeine的official repository和wiki,Caffeine是一款基于Java 8的高性能缓存库,提供接近最佳的命中率。它受到Google Guava的启发。
因为咖啡因是内存中缓存,所以实例化缓存对象非常简单。
例如:
LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterWrite(5, TimeUnit.MINUTES)
.refreshAfterWrite(1, TimeUnit.MINUTES)
.build(key -> createExpensiveGraph(key));
查找条目,或者null如果未找到:
Graph graph = graphs.getIfPresent(key);
查找,并且如果不存在计算中的条目,或者如果不可计算空:
graph = graphs.get(key, k -> createExpensiveGraph(key));
注意:createExpensiveGraph(key)
可能是一个DB吸气剂或实际计算图。
插入或更新条目:
graphs.put(key, graph);
删除的条目:
graphs.invalidate(key);
编辑: 感谢@ BenManes的建议下,我加入的依赖:
Ed它是你的pom.xml
并且加上:
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>1.0.0</version>
</dependency>
不,那是编译错误。 – Bravo
我创建了一个示例spring应用程序,并在基于java的配置下创建了Cache对象 cache = Caffeine.newBuilder()。expireAfterWrite(24,TimeUnit.HOURS).build(); ,尝试在服务类中自动调用此类,如下所示: @Autowire private cache cache;但得到错误,至少需要定义1个Cache类型的Bean。为什么这个例外越来越多?我定义了那个bean,请帮忙。 – Bravo
@Bravo是否在构建中添加了依赖项(jar)?对于Spring,你可能想看看他们的[示例](https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-cache)项目。 –