我有一个Spring Boot应用程序。我们从每年仅更改几次的文件中加载一些数据。缓存它似乎是一个好主意,但是似乎有很多缓存提供程序可供选择,我不确定哪一个最适合我们的需求?
现在我正在使用咖啡因。
[如果您仅作为单个实例运行spring-boot,则Caffeine
是一个不错的选择,因为他们声称它的better performance比Guava Cache
和Ehcache
等。
缺点之一是,Caffeine只是本地缓存,这意味着如果您正在运行的主动-主动HA或高度可伸缩的环境同时具有多个spring boot实例处理请求,则必须考虑如何分辨所有实例以更新其缓存(如果您更新了缓存的数据)。否则,您将最终仍然会缓存一些旧数据的实例,因为它们的缓存尚未更新。
[您可以评估是否使用分布式缓存,例如Hazelcast
,EhCache
或Infinispan
等将更容易将更改复制到所有实例。
仅尝试使用Spring @Cacheable
批注。
例如:
@Component
public class Service{
@Cacheable("files")
public List<String> getContentFromFile(....) {
// ...
}
}
我推荐的引擎是Ehcache
(已开箱即用的Spring Caching集成)。