我有一个使用基于 Guava 缓存的弹簧缓存的弹簧应用程序。由于高吞吐量需求和后写功能,我们现在正在考虑迁移到 Gemfire。我成功地将 Gemfire 配置为缓存,并且能够从缓存中读取和写入。在所有配置示例中,配置需要定义 LocalRegionFactory 如下:
@Bean
public Region<Long,Person> myPersonRegion(LocalRegionFactoryBean<Long, Person> personRegion) throws Exception {
return personRegion.getObject();
}
@Bean
public LocalRegionFactoryBean<Long, Person> personRegion(GemFireCache cache,AsyncEventQueue gemfireQueue) {
LocalRegionFactoryBean<Long, Person> personRegion = new LocalRegionFactoryBean<>();
personRegion.setCache(cache);
personRegion.setClose(false);
personRegion.setName("person");
personRegion.setAsyncEventQueues(new AsyncEventQueue[]{gemfireQueue});
personRegion.setPersistent(false);
return personRegion;
}
bean 定义好后,我们可以使用@Cacheable(value="person")、@CacheEvict(value="person")。如果我们直接使用缓存名称,gemfire 会抛出缓存未定义的错误。
我们使用 Guava(或 Hazelcast、redis 等)的经验是,我们不需要显式定义缓存。它将在第一次出现时由 spring 自动创建。
有没有办法配置 gemfire 也以同样的方式运行?