Spring Boot EhCaching2025年3月17日 | 阅读 7 分钟 EhCacheEhCache 是一个开源的、基于 Java 的缓存,用于提高性能。Ehcache 的当前版本是3。它提供了 JSR-107 缓存管理器的实现。我们可以直接使用它。 EhCache 的特性
EhCache 使用模式缓存使用多种访问模式。EhCache 使用以下几种模式
Cache-aside在 cache-aside 模式中,首先,应用程序咨询缓存。如果找到数据,则直接返回数据。相反,它从 SoR 获取数据,将其存储到缓存中,然后返回。 Cache-as-SoRcache-as-SoR 模式表示对缓存的 SoR 读取和写入操作。它降低了应用程序的责任。它使用读写模式的组合,包括read-through、write-through 和 write-behind。 它降低了应用程序的难度。它允许缓存解决惊群效应问题 Read-throughread-through 模式在从缓存读取数据时也复制 cache-aside 模式。read-through 和 cache-aside 之间的区别在于 read-through 模式实现了 CacheEntryFactory 接口。它指导缓存如何从缓存读取对象。在使用 read-through 模式时,最好使用 SelfPopulatingCache 的实例包装 EhCache 实例。 Write-throughwrite-through 模式在将数据写入缓存时也复制 cache-aside 模式。write-through 和 cache-aside 模式之间的区别在于 write-through 模式实现了 CacheWriter 接口。它配置缓存以用于 write-through 和 write-behind 模式。它在同一执行线程中将数据写入 SoR。 Write-behindwrite-behind 模式与其他三种模式不同。它在可配置的延迟后修改缓存条目。延迟可能以秒、分钟、天、周或很长时间为单位。 同时,它还将数据排队,以便在同一执行线程中的稍后时间写入。 使用 write-behind 模式写入的数据发生在事务范围之外。这意味着它创建一个新事务来提交 SoR 中的数据,该事务与主事务不同。 EhCaching 存储层EhCache 允许我们使用各种数据存储区域,例如堆、磁盘和集群。 我们可以配置多存储缓存(使用多个存储区域)。 它可以被安排和管理为层。 层按顺序组织。 最底层的层称为权威层,另一层称为缓存层。 它也被称为附近或近缓存。 缓存层可以有多个存储区域。 最热门的数据保存在缓存层中,因为它比权威层更快。 其他数据保存在权威层中,权威层速度较慢,但与缓存层相比更丰富。 EhCache 支持四种类型的数据存储
On-Heap Store (堆内存储)它将缓存条目存储在 Java 堆内存中。它与 Java 应用程序共享存储空间。它速度很快,因为它使用堆,但存储空间有限。 垃圾收集器也会扫描堆内存储。 Off-Heap Store (堆外存储)它使用主内存 (RAM) 来存储缓存条目。 垃圾收集器不会扫描它。 它比堆内存储慢,因为缓存条目在使用前会移动到堆内存储。 它的大小有限。 Disk Store (磁盘存储)它使用磁盘来存储缓存条目。 它比基于 RAM 的存储(堆内和堆外存储)慢得多。 如果您使用的是磁盘存储模式,最好使用专用磁盘。 它可以提高吞吐量。 Clustered Store (集群存储)它将缓存条目存储在远程服务器上。 它比堆外存储慢。 它可能有一个故障转移服务器,提供高可用性。 ![]() 以上图表显示
配置 EhCache
EhCache 示例在以下示例中,我们将在应用程序中配置 EhCache。 步骤 1:打开 Spring Initializr https://start.spring.io/。 步骤 2:选择 Spring Boot 版本 2.3.0 M2。 步骤 3:提供 Group 名称。我们提供了 Group 名称 com.javatpoint。 步骤 4:提供 Artifact。我们提供了 Artifact spring-boot-ehcache-example。 步骤 5:添加 Spring Web 依赖项。 步骤 6:单击 Generate 按钮。当我们单击 Generate 按钮时,它将与应用程序相关的所有规范包装到 Jar 文件中并将其下载到本地系统。 步骤 7: 提取 jar 文件。 步骤 8: 复制该文件夹并将其粘贴到 STS 工作区中。 步骤 9: 导入 项目。 File -> Import -> Existing Maven Projects -> Next -> Browse -> Select the folder spring-boot-ehcache-example -> Select Folder -> Finish 导入项目需要一些时间。 步骤 10:从 Maven Repository https://mvnrepository.com/ 逐个复制以下依赖项并将其粘贴到 pom.xml 文件中。
注意:请勿使用包 net.sf.ehcache 的 ehcache。pom.xml 现在,我们需要配置 ehcache.xml 文件。它告诉框架在哪里找到该文件。 步骤 11:打开 application.properties 文件并使用以下属性配置 EhCache。 application.properties 步骤 12:打开 SpringBootEhcacheExampleApplication.java 文件并使用注释 @EnableCaching 启用缓存。 SpringBootEhcacheExampleApplication.java 注意:如果我们不想在主应用程序文件中使用注释 @EnableCaching,我们可以创建一个单独的 CacheConfig 类并使用该注释注释该调用。步骤 13:创建一个模型类。我们在包 com.javatpoint 中创建了模型类,名称为 Student。在模型类中执行以下操作
完成以上所有步骤后,模型类如下所示。 Student.java 步骤 14:创建一个管理学生的 Service 类。我们创建了名为 StudentManager 的服务类。在此类中,我们完成了以下操作
StudentManager.java 现在我们需要创建 ehcache.xml 文件。它包含与缓存相关的信息,例如缓存的名称、内存中元素的数量、数据在缓存中的生存时间等。 步骤 15:在 src/main/resources 文件夹中创建一个名为 ehcache.xml 的缓存配置文件。 ehcahe.xml 现在我们已经创建了所有必需的文件。 创建所有文件后,项目目录如下所示 ![]() 让我们运行该应用程序。 步骤 16:打开 SpringBootEhcacheExampleApplication.java 文件并将其作为 Java Application 运行。 它显示以下输出 |
我们请求您订阅我们的新闻通讯以获取最新更新。