Questo contenuto non è disponibile nella lingua selezionata.
Chapter 1. Using Embedded Caches
Embed Data Grid caches directly in your project for in-memory data storage.
1.1. Adding the EmbeddedCacheManager Bean Copia collegamentoCollegamento copiato negli appunti!
Configure your application to use embedded caches.
Procedure
-
Add
infinispan-spring-boot3-starter-embeddedorinfinispan-spring-boot4-starter-embeddedto your project’s classpath to enable Embedded mode. Use the Spring
@Autowiredannotation to include anEmbeddedCacheManagerbean in your Java configuration classes, as in the following example:private final EmbeddedCacheManager cacheManager; @Autowired public YourClassName(EmbeddedCacheManager cacheManager) { this.cacheManager = cacheManager; }
You are now ready to use Data Grid caches directly within your application, as in the following example:
cacheManager.getCache("testCache").put("testKey", "testValue");
System.out.println("Received value from cache: " + cacheManager.getCache("testCache").get("testKey"));
1.2. Using the reactive mode with Reactor Copia collegamentoCollegamento copiato negli appunti!
Starting with Spring 6.1, reactive mode is supported to make use of caching within reactive applications. If you use spring-boot-starter-webflux, your application may block.
To enable the Data Grid reactive driver, specify the following property in application.properties:
infinispan.embedded.reactive=true
1.3. Cache Manager Configuration Beans Copia collegamentoCollegamento copiato negli appunti!
You can customize the Cache Manager with the following configuration beans:
-
InfinispanGlobalConfigurer -
InfinispanCacheConfigurer -
Configuration -
InfinispanConfigurationCustomizerdeprecated in Spring Boot 3, removed in Spring Boot 4 -
InfinispanGlobalConfigurationCustomizer
In Spring Boot 4, we removed the default cache default that could be customized with the InfinispanConfigurationCustomizer. Use InfinispanCacheConfigurer instead and define default.
@Bean
public InfinispanCacheConfigurer cacheConfigurer() {
return manager -> {
final Configuration ispnConfig = new ConfigurationBuilder()
.cacheMode(CacheMode.LOCAL)
.build();
manager.defineConfiguration("default", ispnConfig);
};
}
You can create one InfinispanGlobalConfigurer bean only. However you can create multiple configurations with the other beans.
InfinispanCacheConfigurer Bean
@Bean
public InfinispanCacheConfigurer cacheConfigurer() {
return manager -> {
final Configuration ispnConfig = new ConfigurationBuilder()
.clustering()
.cacheMode(CacheMode.LOCAL)
.build();
manager.defineConfiguration("local-sync-config", ispnConfig);
};
}
Configuration Bean
Link the bean name to the cache that it configures, as follows:
@Bean(name = "small-cache")
public org.infinispan.configuration.cache.Configuration smallCache() {
return new ConfigurationBuilder()
.read(baseCache)
.memory().size(1000L)
.memory().evictionType(EvictionType.COUNT)
.build();
}
@Bean(name = "large-cache")
public org.infinispan.configuration.cache.Configuration largeCache() {
return new ConfigurationBuilder()
.read(baseCache)
.memory().size(2000L)
.build();
}
Customizer Beans
@Bean
public InfinispanGlobalConfigurationCustomizer globalCustomizer() {
return builder -> builder.transport().clusterName(CLUSTER_NAME);
}
@Bean
public InfinispanConfigurationCustomizer configurationCustomizer() {
return builder -> builder.memory().evictionType(EvictionType.COUNT);
}
1.4. Enabling Spring Cache Support Copia collegamentoCollegamento copiato negli appunti!
With both embedded and remote caches, Data Grid provides an implementation of Spring Cache that you can enable.
Procedure
-
Add the
@EnableCachingannotation to your application.
If the Data Grid starter detects the:
-
EmbeddedCacheManagerbean, it instantiates a newSpringEmbeddedCacheManager. -
RemoteCacheManagerbean, it instantiates a newSpringRemoteCacheManager.
Reference