Bootstrap

SpringBoot:使用Caffeine实现缓存

在本博客中,我们将探讨如何使用Spring的缓存框架向任何Spring Boot应用程序添加基本缓存支持,如果没有正确实现,还将探讨缓存的一些问题。最后但并非最不重要的一点是,我们将看几个在真实场景中有用的缓存示例。

为什么要在应用程序中添加缓存

在深入探讨如何向应用程序添加缓存之前,首先想到的问题是为什么我们需要在应用程序中使用缓存。

假设有一个包含客户数据的应用程序,用户发出两个请求来获取客户的数据(id=100)。

这就是没有缓存时的情况。

如您所见,对于每个请求,应用程序都会转到数据库获取数据。从数据库获取数据是一项成本高昂的操作,因为它涉及IO。

但是,如果中间有一个缓存存储,可以在其中临时存储短时间的数据,则可以将这些往返保存到数据库并在IO时间保存。

这就是使用缓存时上述交互的样子。

在Spring Boot应用程序中实现缓存

SpringBoot提供了什么缓存支持?

  • SpringBoot只提供了一个缓存抽象,您可以使用它将缓存透明、轻松地添加到Spring应用程序中。
  • 它不提供实际的缓存存储。
  • 但是,它可以与不同类型的缓存提供程序一起工作,如Ehcache、Hazelcast、Redis、Caffee等。
  • SpringBoot的缓存抽象可以添加到方法中(使用注释)
  • 基本上,在执行方法之前,Spring框架将检查方法数据是否已经缓存
  • 如果是,则它将从缓存中获取数据。
  • 否则它将执行该方法并缓存数据
  • 它还提供了从缓存中更新或删除数据的抽象。
  • 在我们当前的博客中,我们将了解如何使用Caffeine添加缓存,Caffeine是一种基于Java8的高性能、接近最优的缓存库。

您可以在 application.yaml 文件中指定使用哪个缓存提供程序来设置 spring.cache.type 属性。

但是,如果没有提供属性,Spring将根据添加的库自动检测缓存提供程序。

添加生成依赖项

现在假设您已经启动并运行了基本的Spring boot应用程序,让我们添加缓存依赖项。

打开 build.gradle 文件,并添加以下依赖项以启用Spring Boot的缓存

compile('org.springframework.boot:spring-boot-starter-cache')

接下来我们将添加对Caffeine的依赖

compile group: 'com.github.ben-manes.caffeine', name: 'caffeine', version: '2.8.5'

缓存配置

现在我们需要在Spring Boot应用程序中启用缓存。

为此,我们需要创建一个配置类并提供注释 @EnableCaching 。

@Configuration
@EnableCaching
public class CacheConfig {
     
}

现在这个类是一个空类,但是我们可以向它添加更多配置(如果需要)。

现在我们已经启用了缓存,让我们提供缓存名称和缓存属性的配置,如缓存大小、缓存过期时间等

最简单的方法是在 ap

;