当前位置: 首页 > 知识库问答 >
问题:

咖啡因缓存application.properties配置vs CacheManager类配置

闽焕
2023-03-14

我目前正在学习咖啡因,总体来说我对Spring还不熟悉。我一直在尝试用咖啡因实现缓存;然而,我发现自己遇到了几个问题。

我看到了两种配置咖啡因缓存的方法。

首先是Java类:

public class CaffeineCacheConfig {
    public CacheManager cacheManager() {
        CaffeineCacheManager cacheManager = new CaffeieneCacheManager("example");
        cacheManager.setCaffeiene(caffeieneCacheBuilder());
        return cacheManager;

    Caffeiene<Object, Object> caffeieneCacheBuilder() {
        return Caffeine.newBuilder()
            .initialCapactiy(100)
            .maximumSize(500)
            .expireAfterAccess(10, TimeUnit.MINUTES)
            .recordStats()
    }
}

第二是在应用范围内。财产:

spring.cache.type=caffeine
spring.cache.cache-names=books
spring.cache.caffeine.spec=expireAfterAccess=60s

我想问一下,这两者之间有什么不同之处吗?我需要课程和应用程序吗。属性配置,还是仅其中一个?此外,在Java类实现中,cacheManager是仅应用于名为“example”的缓存,还是应用于每个缓存?

非常感谢!

共有1个答案

西门旻
2023-03-14

属性更容易开始,因为您只需输入缓存名称和参数,然后提供一个缓存实现(caffee)作为依赖项,而且它不需要额外的Java代码。

使用配置类而不是属性的主要优点是,您可以为不同的缓存使用不同的参数(有时您需要不同的ttl,或者不同实体的最大大小,或者希望其中一些永远不会过期,等等)。

在这个答案中,我发布了一个如何使用Spring Boot做到这一点的例子:使用Spring和咖啡因定义多个缓存配置

 类似资料:
  • 我试图使用Spring Boot与咖啡因和一些注释函数。在我们的测试中,对控制器endpoint的异步调用出现了一些问题,这些问题似乎与我们使用非异步缓存的事实有关。 在做一些研究时,我看到了很多使用Caffeine手动使用的例子,但是在和Spring Boot和注释中找不到任何东西。看起来和具有非常不同的API。是否可以异步使用默认的Spring Boot? 谢谢

  • 我已经使用咖啡因缓存设置了一个场景,但我无法让它工作,当参数相同时,总是调用真正的方法。这是我的配置: 波姆。xml CacheManager的配置类 然后是具有可缓存方法的类: 我还尝试将缓存名称添加到可缓存批注: 并将移动到Spring Boot主应用程序类。 真正的方法总是被调用的。 你知道我做错了什么吗? 谢谢

  • 我在java Play Framework作业中使用Caffeine cache实现来缓存传出的http请求,我看到,尽管缓存已经启动并运行,但我的服务仍然每次都访问外部服务器,而不是返回缓存中的值。我看到记录在日志中的键总是相同的。 所以我看到没有设置,所以这可能意味着缓存立即过期。但我仍然不知道如何在配置中设置它 我没有更改我的java代码,如果我需要这样做,我找不到任何示例,或者我只应该有一

  • 从Java8开始,我们可以在ConcurrentHashMap上使用。compute*方法来按键同步处理,这样,如果两个线程同时在同一个键上执行。compute*方法,回调仍然会相继执行,而不是同时执行。但是ConcurrentHashMap不能像缓存通常允许的那样提供及时删除数据的能力。 Guava/Caffeine缓存提供了基于时间的自动删除值的能力,但是您没有基于键的同步处理的讨厌特性,如在

  • 缓存的配置在configs/cache目录,目前支持三种缓存,文件缓存(FileCache), memcache缓存(MemoCache), redis缓存(RedisCache). 文件缓存的配置在file.config.php, 只有一个参数 "cache_dir", 表示文件缓存的根目录 memcache缓存配置在memo.config.php, 可以添加多个memcache服务器,配置格式

  • 本文将介绍如何使用Apache HTTP Server的缓存功能来加速Web和代理服务,同时避免常见问题和错误配置。 Apache HTTP服务器提供了一系列缓存功能,旨在以各种方式提高服务器的性能。 三态RFC2616 HTTP缓存 及其提供者模块提供智能的HTTP感知缓存。内容本身存储在缓存中,旨在遵守控制内容可缓存性的所有各种HTTP头和选项。针对简单和复杂的缓存配置,可以在其中处理代理内容