Spring 启动,使用 EhCache 缓存
Spring Boot, caching with EhCache
我需要在我的应用程序中缓存一些数据,我正在考虑使用 Ehcache。我有几个问题:
- 我需要为 Ehcache 使用另一台服务器吗?
- 我需要一些其他客户端来使用 Ehcache 吗?
- Ehcache 如何与多个实例一起工作?甚至可以使用 Ehcache 创建共享缓存之类的东西吗?
文档和示例应该可以回答您的所有问题:
https://spring.io/blog/2015/06/15/cache-auto-configuration-in-spring-boot-1-3
https://github.com/spring-projects/spring-boot/tree/1.3.x/spring-boot-samples/spring-boot-sample-cache
您当然可以在 Spring 引导应用程序中简单地使用嵌入式 EhCache。如果你想共享缓存,这取决于你的架构。您可以公开 REST 端点以使您的缓存可供其他应用程序使用。
如果您想要分布式、可伸缩、高性能的缓存,您也许应该看看 Hazelcast。
Do I need another server for Ehcache?
您可以在单机模式下使用Ehcache。在此拓扑中,缓存数据保存在应用程序节点中。所以在这种模式下你不需要另一台服务器。 Ehcache 还提供 two other modes:
分布式 – 数据保存在远程服务器(或服务器阵列)中,每个服务器中保存最近使用的数据的子集
应用节点。此拓扑提供了一组丰富的一致性
选项。分布式拓扑是推荐的方法
集群或横向扩展的应用程序环境。它提供了
最高级别的性能、可用性和可扩展性。
分布式拓扑可用作 Terracotta open source offering with no client limitations but limitations on Terracotta cluster size. These are removed when using the commercial BigMemory Max。
- Replicated – 缓存的数据集保存在每个应用程序节点中,数据在节点之间复制或失效,无需
锁定。复制可以是异步的也可以是同步的,
传播发生时写入线程阻塞的地方。唯一的
此拓扑中支持的一致性模式是弱一致性。
Do I need some another client to work with Ehcache?
您应该使用 Ehcache 库以便能够与 Ehache 通信。但是 Spring 提供了一个缓存抽象,它使用起来更优雅,并且还具有独立于底层缓存实现的优势。因此,如果您使用 Spring 缓存抽象,您可以轻松地将 Ehcache 转换为 Hazelcast。您可以在 here.
中阅读有关 Spring 缓存抽象的更多信息
Spring Boot 提供 spring-boot-starter-cache
启动包,只要启用缓存支持,它就会根据实现自动配置合适的 CacheManager
。
How Ehcache works with multiple instances? Is it even possible to
create something like shared cache using Ehcache?
Ehcache provides in-process cache, which you can replicate across
multiple nodes. It is also at the core of BigMemory Go and BigMemory
Max, Terracotta’s commercial caching and in-memory data-storage
products. The Terracotta Server Array provided with BigMemory Max
enables mixed in-process/out-of-process configurations with
terabyte-size caches. For information about Terracotta’s BigMemory
offerings, see the BigMemory Go and BigMemory Max product
documentation at http://terracotta.org/documentation.
如上所述,Ehcache 提供了一个免费的集群选项。
对于这个需求,Redis和Hazelcast也是不错的选择。
我需要在我的应用程序中缓存一些数据,我正在考虑使用 Ehcache。我有几个问题:
- 我需要为 Ehcache 使用另一台服务器吗?
- 我需要一些其他客户端来使用 Ehcache 吗?
- Ehcache 如何与多个实例一起工作?甚至可以使用 Ehcache 创建共享缓存之类的东西吗?
文档和示例应该可以回答您的所有问题:
https://spring.io/blog/2015/06/15/cache-auto-configuration-in-spring-boot-1-3 https://github.com/spring-projects/spring-boot/tree/1.3.x/spring-boot-samples/spring-boot-sample-cache
您当然可以在 Spring 引导应用程序中简单地使用嵌入式 EhCache。如果你想共享缓存,这取决于你的架构。您可以公开 REST 端点以使您的缓存可供其他应用程序使用。
如果您想要分布式、可伸缩、高性能的缓存,您也许应该看看 Hazelcast。
Do I need another server for Ehcache?
您可以在单机模式下使用Ehcache。在此拓扑中,缓存数据保存在应用程序节点中。所以在这种模式下你不需要另一台服务器。 Ehcache 还提供 two other modes:
分布式 – 数据保存在远程服务器(或服务器阵列)中,每个服务器中保存最近使用的数据的子集 应用节点。此拓扑提供了一组丰富的一致性 选项。分布式拓扑是推荐的方法 集群或横向扩展的应用程序环境。它提供了 最高级别的性能、可用性和可扩展性。
分布式拓扑可用作 Terracotta open source offering with no client limitations but limitations on Terracotta cluster size. These are removed when using the commercial BigMemory Max。
- Replicated – 缓存的数据集保存在每个应用程序节点中,数据在节点之间复制或失效,无需 锁定。复制可以是异步的也可以是同步的, 传播发生时写入线程阻塞的地方。唯一的 此拓扑中支持的一致性模式是弱一致性。
Do I need some another client to work with Ehcache?
您应该使用 Ehcache 库以便能够与 Ehache 通信。但是 Spring 提供了一个缓存抽象,它使用起来更优雅,并且还具有独立于底层缓存实现的优势。因此,如果您使用 Spring 缓存抽象,您可以轻松地将 Ehcache 转换为 Hazelcast。您可以在 here.
中阅读有关 Spring 缓存抽象的更多信息Spring Boot 提供 spring-boot-starter-cache
启动包,只要启用缓存支持,它就会根据实现自动配置合适的 CacheManager
。
How Ehcache works with multiple instances? Is it even possible to create something like shared cache using Ehcache?
Ehcache provides in-process cache, which you can replicate across multiple nodes. It is also at the core of BigMemory Go and BigMemory Max, Terracotta’s commercial caching and in-memory data-storage products. The Terracotta Server Array provided with BigMemory Max enables mixed in-process/out-of-process configurations with terabyte-size caches. For information about Terracotta’s BigMemory offerings, see the BigMemory Go and BigMemory Max product documentation at http://terracotta.org/documentation.
如上所述,Ehcache 提供了一个免费的集群选项。 对于这个需求,Redis和Hazelcast也是不错的选择。