异步写
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder().using(
PooledExecutionServiceConfigurationBuilder.newPooledExecutionServiceConfigurationBuilder().pool("writeBehindPool",1,5).build())
org.ehcache.Cache<String,String> myCache = cacheManager.createCache("myCache",CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class,String.class,ResourcePoolsBuilder.newResourcePoolsBuilder().heap(100,MemoryUnit.MB)))
.withDispatcherConcurrency(4)
.withExpiry(Expirations.timeToLiveExpiration(Duration.of(10,TimeUnit.SECONDS)))
.withLoaderWriter(
new DefaultCacheLoaderWriter<String,String>(){
@Override
public void write(String key,String value){
}
@Override
public void delete(String key){
}
}
)
.add(
WriteBehindConfigurationBuuilder.
newUnBatchWriteBehindConfiguration()
.queueSize(5)
.concurrencyLevel(2)
.userThreadPool("writeBehindPool")
.build()
);
)
for(int i = 0;i< writeBehindConcurrency;i++){
if(config.getBatchingConfiguration() == null){
this.stripes.add(
new NonBatchingLocalHeapWriteBehindQueue<K,V>(executionService,defaultThreadPool,config,cacheLoaderWriter);
);
}else{
new BatchingLocalHeapWriteBehindQueue<K,V>(
executionService,defaultThreadPool,config,cacheLoaderWriter);
}
}
批量写
.withLoaderWriter(
new DefaultCacheLoaderWriter<String,String>(){
@Override
public void writeAll() throws BulkCacheWritingException,Exception{
for(Object entry:entries){
}
}
@Override
public void deleteAll(Iterable<> keys) throws BuikCacheWritingException,Exception{
for(Object key:keys){
}
}
}
)
.add(
WriteBehindConfigurationBuilder
.newBatchedWriteBehindConfiguration(3,TimeUnit.SECONDS,2)
.queueSize(5)
.concurrencyLevel(1)
.enableCoalescing()
.userThreadPool("writeBehindPool")
.build())
);