一尘不染

Spring Boot,使用EhCache进行缓存

java

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

  1. 我是否需要其他服务器进行Ehcache?
  2. 我是否需要其他客户端来使用Ehcache?
  3. Ehcache如何与多个实例一起使用?甚至可以使用Ehcache创建类似共享缓存的内容吗?

阅读 233

收藏
2020-12-03

共1个答案

一尘不染

我是否需要其他服务器进行Ehcache?

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

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

分布式拓扑可作为Terracotta开源产品提供,没有客户端限制,但对Terracotta群集大小有限制。使用商用BigMemory
Max
时,这些将被删除。

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

我是否需要其他客户端来使用Ehcache?

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

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

Ehcache如何与多个实例一起使用?甚至可以使用Ehcache创建类似共享缓存的内容吗?

引用Ehcache文档

Ehcache提供了进程内缓存,您可以在多个节点之间进行复制。它还是Terracotta的商业缓存和内存中数据存储产品BigMemory
Go和BigMemory Max的核心。BigMemory
Max随附的Terracotta服务器阵列可实现具有TB级缓存的混合进程内/进程外配置。有关Terracotta的BigMemory产品的信息,请参阅http://terracotta.org/documentation上的BigMemory
Go和BigMemory Max产品文档。

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

2020-12-03