2.2. 创建和使用嵌入式缓存
数据网格提供了一个 GlobalConfigurationBuilder
API,用于控制 Cache Manager 和用于配置缓存的 ConfigurationBuilder
API。
先决条件
-
添加
infinispan-core
工件作为pom.xml
中的依赖项。
流程
初始化
CacheManager
。注意在创建缓存前,您必须始终调用
cacheManager.start ()
方法来初始化CacheManager
。默认构造器为您进行此操作,但存在不加载的构造器的超载版本。缓存管理器也是重量级对象,而数据网格建议每个 JVM 只实例化一个实例。
-
使用
ConfigurationBuilder
API 定义缓存配置。 使用
getCache ()
、createCache ()
或getOrCreateCache ()
方法获取缓存。数据网格建议使用
getOrCreateCache ()
方法,因为它可以在所有节点上创建缓存或返回现有缓存。-
如果需要,使用
PERMANENT
标志进行缓存,在重启过程中保留。 -
通过调用
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 ()。