我需要在我的应用程序中缓存一些数据,考虑使用Ehcache。我有几个问题:
- 我是否需要为Ehcache再准备另外一个服务器?
- 我是否需要另外一个客户端来与Ehcache配合工作?
- Ehcache如何处理多个实例?是否可能使用Ehcache创建类似共享缓存的东西?
我需要为Ehcache再开一个服务器吗?
您可以在独立模式下使用Ehcache。在这种拓扑结构中,缓存数据保存在应用程序节点中。因此,在此模式下,您不需要另一台服务器。Ehcache还提供另外两种模式:
分布式 - 数据保存在远程服务器(或一组服务器)中,每个应用程序节点都保存一部分最近使用的数据。这种拓扑结构提供了丰富的一致性选项。在集群或扩展的应用环境中,分布式拓扑结构是推荐的方法。它提供了最高水平的性能、可用性和可伸缩性。
分布式拓扑结构作为Terracotta开源方案提供,没有客户端限制,但有Terracotta集群大小的限制。如果使用商业版BigMemory Max则可以解除这些限制。
我需要另一个客户端才能使用Ehcache吗?
您应该使用Ehcache库以便能够与Ehache通信。但是,Spring提供了一个更优雅的缓存抽象,也具有独立于底层缓存实现的优点。因此,如果您使用Spring缓存抽象,可以轻松地从Ehcache切换到Hazelcast等其他缓存实现。您可以在这里阅读有关Spring缓存抽象的更多信息。
Spring Boot提供spring-boot-starter-cache
启动程序包,根据实现自动配置适当的CacheManager
只要启用了缓存支持。
Ehcache如何处理多个实例?是否可能创建类似共享缓存的东西使用Ehcache?
引用自Ehcache文档:
Ehcache提供进程内缓存,您可以在多个节点之间复制它。它还是BigMemory Go和BigMemory Max的核心,Terracotta的商业缓存和内存数据存储产品。与BigMemory Max一起提供的Terracotta Server Array使混合进程/外部进程配置成为可能,具有TB级别的缓存。有关Terracotta的BigMemory产品,请参见http://terracotta.org/documentation中的BigMemory Go和BigMemory Max产品文档。
如上所述,Ehcache提供了免费的集群选项。对于此要求,Redis和Hazelcast也是不错的选择。