Im正在使用ignite版本
2.2.0
我有以下缓存配置:
private CacheConfiguration<String, Product> getProductCacheConfiguration() {
final CacheConfiguration<String, Product> cacheConfiguration = new CacheConfiguration<>(Identifiers.PRODUCT_IGNITE_CACHE);
cacheConfiguration.setName(Identifiers.PRODUCT_IGNITE_CACHE);
cacheConfiguration.setIndexedTypes(String.class, Product.class);
cacheConfiguration.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
cacheConfiguration.setCacheStoreFactory(new FactoryBuilder.SingletonFactory<>(new ProductCacheStoreAdapter(this.databaseConfiguration)));
cacheConfiguration.setReadThrough(true);
cacheConfiguration.setWriteThrough(true);
cacheConfiguration.setCopyOnRead(false);
cacheConfiguration.setCacheMode(CacheMode.PARTITIONED);
cacheConfiguration.setOnheapCacheEnabled(true);
return cacheConfiguration;
}
最初,当应用程序(spring应用程序)启动时,我会将数据库中的所有数据加载到ignite缓存中。之后,我启动了一个spring scheduler任务,负责加载新数据和替换旧数据。通过替换我并不意味着替换当前缓存中存在的单个项——我的意思是替换整个缓存——删除所有当前条目并添加所有新的条目。
这里的问题是,在这个替换过程中,应用程序将不可用,因为我将首先删除所有数据,然后添加新数据。因此,当没有可用的数据时,有一个很小的时间范围。我不想那样。
有没有一种方法可以在没有数据的时间范围内替换缓存?