搜索

2.2. 创建和使用嵌入式缓存

download PDF

数据网格提供了一个 GlobalConfigurationBuilder API,用于控制 Cache Manager 和用于配置缓存的 ConfigurationBuilder API。

先决条件

  • 添加 infinispan-core 工件作为 pom.xml 中的依赖项。

流程

  1. 初始化 CacheManager

    注意

    在创建缓存前,您必须始终调用 cacheManager.start () 方法来初始化 CacheManager。默认构造器为您进行此操作,但存在不加载的构造器的超载版本。

    缓存管理器也是重量级对象,而数据网格建议每个 JVM 只实例化一个实例。

  2. 使用 ConfigurationBuilder API 定义缓存配置。
  3. 使用 getCache ()createCache ()getOrCreateCache () 方法获取缓存。

    数据网格建议使用 getOrCreateCache () 方法,因为它可以在所有节点上创建缓存或返回现有缓存。

  4. 如果需要,使用 PERMANENT 标志进行缓存,在重启过程中保留。
  5. 通过调用 cacheManager.stop () 方法来释放 JVM 资源并正常关闭任何缓存,停止 CacheManager
// Set up a clustered Cache Manager.
GlobalConfigurationBuilder global = GlobalConfigurationBuilder.defaultClusteredBuilder();
// Initialize the default Cache Manager.
DefaultCacheManager cacheManager = new DefaultCacheManager(global.build());
// Create a distributed cache with synchronous replication.
ConfigurationBuilder builder = new ConfigurationBuilder();
                     builder.clustering().cacheMode(CacheMode.DIST_SYNC);
// Obtain a volatile cache.
Cache<String, String> cache = cacheManager.administration().withFlags(CacheContainerAdmin.AdminFlag.VOLATILE).getOrCreateCache("myCache", builder.build());
// Stop the Cache Manager.
cacheManager.stop();

getCache () 方法

调用 getCache (String) 方法来获取缓存,如下所示:

Cache<String, String> myCache = manager.getCache("myCache");

前面的操作会创建一个名为 myCache 的缓存(如果尚不存在),并返回它。

使用 getCache () 方法仅在您调用方法的节点上创建缓存。换句话说,它将执行一个本地操作,必须在集群的每个节点上调用。通常,跨越多个节点部署的应用在初始化期间获取缓存,以确保缓存是 对称 并存在于每个节点上。

createCache () 方法

调用 createCache () 方法,以在整个集群中动态创建缓存。

Cache<String, String> myCache = manager.administration().createCache("myCache", "myTemplate");

前面的操作还会在之后加入集群的任何节点上自动创建缓存。

使用 createCache () 方法创建的缓存默认为临时。如果整个集群关闭,则在重启时不会再次创建缓存。

PERMANENT 标志

使用 PERMANENT 标志来确保缓存可以在重新启动后保留。

Cache<String, String> myCache = manager.administration().withFlags(AdminFlag.PERMANENT).createCache("myCache", "myTemplate");

要使 PERMANENT 标志生效,您必须启用全局状态并设置配置存储供应商。

有关配置存储供应商的更多信息,请参阅 GlobalStateConfigurationBuilder#configurationStorage ()

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.