Spring Boot,使用EhCache进行缓存

我需要在我的应用程序中缓存一些数据,我正在考虑使用Ehcache。 我有几个问题:

  1. 我需要另一台Ehcache服务器吗?
  2. 我是否需要其他客户与Ehcache合作?
  3. Ehcache如何处理多个实例? 甚至可以使用Ehcache创建共享缓存之类的东西吗?

我需要另一台Ehcache服务器吗?

您可以在独立模式下使用Ehcache。 在此拓扑中,缓存数据保存在应用程序节点中。 所以在这种模式下你不需要另一台服务器。 Ehcache还提供了另外两种模式 :

  1. 分布式 – 数据保存在远程服务器(或服务器arrays)中,每个应用程序节点中保存有最近使用的数据子集。 此拓扑提供了一组丰富的一致性选项。 分布式拓扑是群集或扩展应用程序环境中的推荐方法。 它提供最高级别的性能,可用性和可伸缩性。

    分布式拓扑以Terracotta开源产品的forms提供 ,没有客户端限制,但对Terracotta集群大小有限制。 使用商业BigMemory Max时会删除这些内容。

  2. 已复制 – 缓存的数据集保存在每个应用程序节点中,并且数据在节点之间复制或无效,无需锁定。 复制可以是异步的,也可以是同步的,其中写入线程在传播时阻塞。 此拓扑中支持的唯一一致性模式是弱一致性。

我是否需要其他客户与Ehcache合作?

您应该使用Ehcache库以便能够与Ehache通信。 但Spring提供了一种缓存抽象,它更优雅,并且还具有独立于底层缓存实现的优势。 因此,如果您使用Spring Caching Abstraction,您可以轻松地将表单Ehcache切换到Hazelcast。 您可以在此处阅读有关Spring Caching Abstraction的更多信息。

Spring Boot提供spring-boot-starter-cache启动程序包,只要启用了缓存支持,它就会根据实现自动配置合适的CacheManager

Ehcache如何处理多个实例? 甚至可以使用Ehcache创建共享缓存之类的东西吗?

引用Ehcache文档 :

Ehcache提供进程内缓存,您可以跨多个节点进行复制。 它也是BigMemory Go和BigMemory Max的核心,这是Terracotta的商业缓存和内存数据存储产品。 随BigMemory Max提供的Terracotta服务器arrays支持使用TB级缓存的混合进程内/进程外配置。 有关Terracotta的BigMemory产品的信息,请参阅http://terracotta.org/documentation上的BigMemory Go和BigMemory Max产品文档。

如上所述,Ehcache提供免费的群集选项。 对于这个要求,Redis和Hazelcast也是不错的选择。

文档和示例应回答您的所有问题:

https://spring.io/blog/2015/06/15/cache-auto-configuration-in-spring-boot-1-3 https://github.com/spring-projects/spring-boot/tree/master /弹簧引导样本/弹簧引导样本缓存

您当然可以在Spring Boot应用程序中简单地使用嵌入式EhCache。 如果要共享缓存,则取决于您的体系结构。 您可以公开REST端点,以使缓存可供其他应用程序使用。

如果你想要一个分布式,扩展,高性能的缓存,你可能应该看看Hazelcast。