List of usage examples for com.google.common.cache CacheBuilder expireAfterAccess
public CacheBuilder<K, V> expireAfterAccess(long duration, TimeUnit unit)
From source file:org.pentaho.caching.ri.impl.GuavaCacheManager.java
<K, V> void configureCacheBuilder(CompleteConfiguration<K, V> completeConfiguration, CacheBuilder<Object, Object> cacheBuilder) { ExpiryPolicy expiryPolicy = completeConfiguration.getExpiryPolicyFactory().create(); Duration expiryForAccess = expiryPolicy.getExpiryForAccess(); if (expiryForAccess != null && !expiryForAccess.isEternal()) { cacheBuilder.expireAfterAccess(expiryForAccess.getDurationAmount(), expiryForAccess.getTimeUnit()); }/*from ww w . jav a2s . c om*/ Duration expiryForUpdate = expiryPolicy.getExpiryForUpdate(); if (expiryForUpdate != null && !expiryForUpdate.isEternal()) { cacheBuilder.expireAfterWrite(expiryForUpdate.getDurationAmount(), expiryForUpdate.getTimeUnit()); } }
From source file:org.elasticsearch.indices.cache.filter.terms.IndicesTermsFilterCache.java
@Inject public IndicesTermsFilterCache(Settings settings, Client client) { super(settings); this.client = client; ByteSizeValue size = componentSettings.getAsBytesSize("size", new ByteSizeValue(10, ByteSizeUnit.MB)); TimeValue expireAfterWrite = componentSettings.getAsTime("expire_after_write", null); TimeValue expireAfterAccess = componentSettings.getAsTime("expire_after_access", null); CacheBuilder<BytesRef, TermsFilterValue> builder = CacheBuilder.newBuilder().maximumWeight(size.bytes()) .weigher(new TermsFilterValueWeigher()); if (expireAfterAccess != null) { builder.expireAfterAccess(expireAfterAccess.millis(), TimeUnit.MILLISECONDS); }/*from w w w. jav a 2 s.c om*/ if (expireAfterWrite != null) { builder.expireAfterWrite(expireAfterWrite.millis(), TimeUnit.MILLISECONDS); } this.cache = builder.build(); }
From source file:com.datatorrent.lib.db.cache.CacheStore.java
@Override public void connect() throws IOException { open = true;/*from w ww . ja v a 2s.c om*/ CacheBuilder<Object, Object> cacheBuilder = CacheBuilder.newBuilder(); cacheBuilder.maximumSize(maxCacheSize); if (entryExpiryStrategy == ExpiryType.EXPIRE_AFTER_ACCESS) { cacheBuilder.expireAfterAccess(entryExpiryDurationInMillis, TimeUnit.MILLISECONDS); } else if (entryExpiryStrategy == ExpiryType.EXPIRE_AFTER_WRITE) { cacheBuilder.expireAfterWrite(entryExpiryDurationInMillis, TimeUnit.MILLISECONDS); } cache = cacheBuilder.build(); this.cleanupScheduler = Executors.newScheduledThreadPool(1); cleanupScheduler.scheduleAtFixedRate(new Runnable() { @Override public void run() { cache.cleanUp(); } }, cacheCleanupIntervalInMillis, cacheCleanupIntervalInMillis, TimeUnit.MILLISECONDS); }
From source file:org.restheart.cache.impl.GuavaLoadingCache.java
public GuavaLoadingCache(long size, EXPIRE_POLICY expirePolicy, long ttl, Function<K, V> loader) { CacheBuilder builder = CacheBuilder.newBuilder(); builder.maximumSize(size);/*from ww w . j a va 2 s . com*/ if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_WRITE) { builder.expireAfterWrite(ttl, TimeUnit.MILLISECONDS); } else if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_READ) { builder.expireAfterAccess(ttl, TimeUnit.MILLISECONDS); } wrapped = builder.build(new CacheLoader<K, Optional<V>>() { @Override public Optional<V> load(K key) throws Exception { return Optional.ofNullable(loader.apply(key)); } }); }
From source file:org.restheart.cache.impl.GuavaCache.java
public GuavaCache(long size, EXPIRE_POLICY expirePolicy, long ttl) { CacheBuilder builder = CacheBuilder.newBuilder(); builder.maximumSize(size);//ww w . j a v a2 s .c om if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_WRITE) { builder.expireAfterWrite(ttl, TimeUnit.MILLISECONDS); } else if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_READ) { builder.expireAfterAccess(ttl, TimeUnit.MILLISECONDS); } wrapped = builder.build(); }
From source file:org.restheart.cache.impl.GuavaCache.java
public GuavaCache(long size, EXPIRE_POLICY expirePolicy, long ttl, Consumer<Map.Entry<K, Optional<V>>> remover) { CacheBuilder builder = CacheBuilder.newBuilder(); builder.maximumSize(size);//from ww w .j a v a 2 s . c o m if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_WRITE) { builder.expireAfterWrite(ttl, TimeUnit.MILLISECONDS); } else if (ttl > 0 && expirePolicy == EXPIRE_POLICY.AFTER_READ) { builder.expireAfterAccess(ttl, TimeUnit.MILLISECONDS); } wrapped = builder.removalListener((RemovalNotification notification) -> { remover.accept(notification); }).build(); }
From source file:org.apache.nifi.processors.standard.TransformXml.java
@OnScheduled public void onScheduled(final ProcessContext context) { final ComponentLog logger = getLogger(); final Integer cacheSize = context.getProperty(CACHE_SIZE).asInteger(); final Long cacheTTL = context.getProperty(CACHE_TTL_AFTER_LAST_ACCESS).asTimePeriod(TimeUnit.SECONDS); if (cacheSize > 0) { CacheBuilder cacheBuilder = CacheBuilder.newBuilder().maximumSize(cacheSize); if (cacheTTL > 0) { cacheBuilder = cacheBuilder.expireAfterAccess(cacheTTL, TimeUnit.SECONDS); }/*from w w w . j a v a2 s . c o m*/ cache = cacheBuilder.build(new CacheLoader<String, Templates>() { public Templates load(String path) throws TransformerConfigurationException { return newTemplates(path); } }); } else { cache = null; logger.warn("Stylesheet cache disabled because cache size is set to 0"); } }
From source file:com.github.benmanes.caffeine.cache.testing.GuavaCacheFromContext.java
/** Returns a Guava-backed cache. */ @SuppressWarnings("CheckReturnValue") public static <K, V> Cache<K, V> newGuavaCache(CacheContext context) { checkState(!context.isAsync(), "Guava caches are synchronous only"); CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder(); context.guava = builder;/*from w w w . j av a 2s. c o m*/ builder.concurrencyLevel(1); if (context.initialCapacity != InitialCapacity.DEFAULT) { builder.initialCapacity(context.initialCapacity.size()); } if (context.isRecordingStats()) { builder.recordStats(); } if (context.maximumSize != Maximum.DISABLED) { if (context.weigher == CacheWeigher.DEFAULT) { builder.maximumSize(context.maximumSize.max()); } else { builder.weigher(new GuavaWeigher<Object, Object>(context.weigher)); builder.maximumWeight(context.maximumWeight()); } } if (context.afterAccess != Expire.DISABLED) { builder.expireAfterAccess(context.afterAccess.timeNanos(), TimeUnit.NANOSECONDS); } if (context.afterWrite != Expire.DISABLED) { builder.expireAfterWrite(context.afterWrite.timeNanos(), TimeUnit.NANOSECONDS); } if (context.refresh != Expire.DISABLED) { builder.refreshAfterWrite(context.refresh.timeNanos(), TimeUnit.NANOSECONDS); } if (context.expires() || context.refreshes()) { builder.ticker(context.ticker()); } if (context.keyStrength == ReferenceType.WEAK) { builder.weakKeys(); } else if (context.keyStrength == ReferenceType.SOFT) { throw new IllegalStateException(); } if (context.valueStrength == ReferenceType.WEAK) { builder.weakValues(); } else if (context.valueStrength == ReferenceType.SOFT) { builder.softValues(); } if (context.removalListenerType != Listener.DEFAULT) { boolean translateZeroExpire = (context.afterAccess == Expire.IMMEDIATELY) || (context.afterWrite == Expire.IMMEDIATELY); builder.removalListener(new GuavaRemovalListener<>(translateZeroExpire, context.removalListener)); } Ticker ticker = (context.ticker == null) ? Ticker.systemTicker() : context.ticker; if (context.loader == null) { context.cache = new GuavaCache<>(builder.<Integer, Integer>build(), ticker, context.isRecordingStats()); } else if (context.loader().isBulk()) { context.cache = new GuavaLoadingCache<>( builder.build(new BulkLoader<Integer, Integer>(context.loader())), ticker, context.isRecordingStats()); } else { context.cache = new GuavaLoadingCache<>( builder.build(new SingleLoader<Integer, Integer>(context.loader())), ticker, context.isRecordingStats()); } @SuppressWarnings("unchecked") Cache<K, V> castedCache = (Cache<K, V>) context.cache; return castedCache; }
From source file:org.apache.druid.server.lookup.cache.loading.OnHeapLoadingCache.java
/** * @param concurrencyLevel default to {@code DEFAULT_CONCURRENCY_LEVEL} * @param initialCapacity default to {@code DEFAULT_INITIAL_CAPACITY} * @param maximumSize Max number of entries that the cache can hold, When set to zero, elements will be evicted immediately after being loaded into the * cache.//from w w w . j av a 2 s. c o m * When set to null, cache maximum size is infinity * @param expireAfterAccess Specifies that each entry should be automatically removed from the cache once a fixed duration * has elapsed after the entry's creation, the most recent replacement of its value, or its last * access. Access time is reset by all cache read and write operations. * No read-time-based eviction when set to null. * @param expireAfterWrite Specifies that each entry should be automatically removed from the cache once a fixed duration * has elapsed after the entry's creation, or the most recent replacement of its value. * No write-time-based eviction when set to null. */ @JsonCreator public OnHeapLoadingCache(@JsonProperty("concurrencyLevel") int concurrencyLevel, @JsonProperty("initialCapacity") int initialCapacity, @JsonProperty("maximumSize") Long maximumSize, @JsonProperty("expireAfterAccess") Long expireAfterAccess, @JsonProperty("expireAfterWrite") Long expireAfterWrite) { this.concurrencyLevel = concurrencyLevel <= 0 ? DEFAULT_CONCURRENCY_LEVEL : concurrencyLevel; this.initialCapacity = initialCapacity <= 0 ? DEFAULT_INITIAL_CAPACITY : initialCapacity; this.maximumSize = maximumSize; this.expireAfterAccess = expireAfterAccess; this.expireAfterWrite = expireAfterWrite; CacheBuilder builder = CacheBuilder.newBuilder().concurrencyLevel(this.concurrencyLevel) .initialCapacity(this.initialCapacity).recordStats(); if (this.expireAfterAccess != null) { builder.expireAfterAccess(expireAfterAccess, TimeUnit.MILLISECONDS); } if (this.expireAfterWrite != null) { builder.expireAfterWrite(this.expireAfterWrite, TimeUnit.MILLISECONDS); } if (this.maximumSize != null) { builder.maximumSize(this.maximumSize); } this.cache = builder.build(); if (isClosed.getAndSet(false)) { log.info("Guava Based OnHeapCache started with spec [%s]", cache.toString()); } }
From source file:org.eclipse.xtext.xbase.ide.types.ClasspathScanner.java
protected Cache<Pair<ClassLoader, Collection<String>>, Iterable<ITypeDescriptor>> createClassLoaderCache() { CacheBuilder<Object, Object> _newBuilder = CacheBuilder.newBuilder(); CacheBuilder<Object, Object> _initialCapacity = _newBuilder.initialCapacity(8); CacheBuilder<Object, Object> _concurrencyLevel = _initialCapacity.concurrencyLevel(2); CacheBuilder<Object, Object> _maximumSize = _concurrencyLevel.maximumSize(32); CacheBuilder<Object, Object> _expireAfterAccess = _maximumSize.expireAfterAccess(5, TimeUnit.MINUTES); return _expireAfterAccess.<Pair<ClassLoader, Collection<String>>, Iterable<ITypeDescriptor>>build(); }