ehcache

net.sf.ehcache.constructs.refreshahead
Class RefreshAheadCache

java.lang.Object
  extended by net.sf.ehcache.constructs.EhcacheDecoratorAdapter
      extended by net.sf.ehcache.constructs.refreshahead.RefreshAheadCache
All Implemented Interfaces:
Cloneable, Ehcache, InternalEhcache

public class RefreshAheadCache
extends EhcacheDecoratorAdapter

A cache decorator which implements read ahead refreshing. Read ahead occurs when a cache entry is accessed prior to its expiration, and triggers a reload of the value in the background.

A significant attempt is made to ensure only one node of the cache works on a specific key at a time. There is no guarantee that every triggered refresh ahead case will be processed. As the maximum number of backlog entries is reached, refresh ahead requests will be dropped silently.

Provided the Number of threads per node * Number of nodes < the maximum backlog, only one node in the cluster will refresha given key at a time.

Author:
cschanck

Field Summary
 
Fields inherited from class net.sf.ehcache.constructs.EhcacheDecoratorAdapter
underlyingCache
 
Constructor Summary
RefreshAheadCache(Ehcache adaptedCache, RefreshAheadCacheConfiguration refreshConfig)
          Create a Refresh Ahead Cache Adaptor with the specified configuration.
 
Method Summary
static Set<ExtendedStatistics.Statistic<Number>> findBacklogStatistic(Ehcache cache)
          Find backlog statistic.
static Set<ExtendedStatistics.Statistic<Number>> findDroppedStatistic(Ehcache cache)
          Find dropped statistic.
static Set<ExtendedStatistics.Statistic<Number>> findOfferStatistic(Ehcache cache)
          Find offer statistic.
static Set<ExtendedStatistics.Statistic<Number>> findProcessedStatistic(Ehcache cache)
          Find processed statistic.
static Set<ExtendedStatistics.Statistic<Number>> findRefreshedStatistic(Ehcache cache)
          Find refreshed counter statistic.
 Element get(Object key)
          Gets an element from the cache.
 Element get(Serializable key)
          Gets an element from the cache.
 long getBacklogCount()
          Gets backlog count.
 long getDroppedCount()
          Gets dropped count.
 String getName()
          Gets the cache name.
 long getOfferCount()
          Gets offer count.
 long getProcessedCount()
          Gets processed count.
 long getRefreshSuccessCount()
          number of refreshes processed locally.
 
Methods inherited from class net.sf.ehcache.constructs.EhcacheDecoratorAdapter
acquireReadLockOnKey, acquireWriteLockOnKey, addPropertyChangeListener, bootstrap, calculateInMemorySize, calculateOffHeapSize, calculateOnDiskSize, clone, createQuery, disableDynamicFeatures, dispose, evictExpiredElements, flush, getAll, getAllWithLoader, getBootstrapCacheLoader, getCacheConfiguration, getCacheEventNotificationService, getCacheExceptionHandler, getCacheManager, getDiskStoreSize, getGuid, getInternalContext, getKeys, getKeysNoDuplicateCheck, getKeysWithExpiryCheck, getMemoryStoreSize, getOffHeapStoreSize, getQuiet, getQuiet, getRegisteredCacheExtensions, getRegisteredCacheLoaders, getRegisteredCacheWriter, getSearchAttribute, getSearchAttributes, getSize, getStatistics, getStatus, getWithLoader, getWriterManager, hasAbortedSizeOf, initialise, isClusterBulkLoadEnabled, isClusterCoherent, isDisabled, isElementInMemory, isElementInMemory, isElementOnDisk, isElementOnDisk, isExpired, isKeyInCache, isNodeBulkLoadEnabled, isNodeCoherent, isReadLockedByCurrentThread, isSearchable, isValueInCache, isWriteLockedByCurrentThread, load, loadAll, put, put, putAll, putIfAbsent, putIfAbsent, putQuiet, putWithWriter, recalculateSize, registerCacheExtension, registerCacheLoader, registerCacheWriter, registerDynamicAttributesExtractor, releaseReadLockOnKey, releaseWriteLockOnKey, remove, remove, remove, remove, removeAll, removeAll, removeAll, removeAll, removeAndReturnElement, removeElement, removePropertyChangeListener, removeQuiet, removeQuiet, removeWithWriter, replace, replace, setBootstrapCacheLoader, setCacheExceptionHandler, setCacheManager, setDisabled, setName, setNodeBulkLoadEnabled, setNodeCoherent, setTransactionManagerLookup, toString, tryReadLockOnKey, tryWriteLockOnKey, unregisterCacheExtension, unregisterCacheLoader, unregisterCacheWriter, waitUntilClusterBulkLoadComplete, waitUntilClusterCoherent
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RefreshAheadCache

public RefreshAheadCache(Ehcache adaptedCache,
                         RefreshAheadCacheConfiguration refreshConfig)
Create a Refresh Ahead Cache Adaptor with the specified configuration. An auxiliary EhCache Cache will be created for the purposes of synchronization, so only one node in a clustered environment will refresh a key at a given time.

Parameters:
adaptedCache -
refreshConfig -
Method Detail

get

public Element get(Object key)
            throws IllegalStateException,
                   CacheException
Description copied from class: EhcacheDecoratorAdapter
Gets an element from the cache. Updates Element Statistics

Note that the Element's lastAccessTime is always the time of this get. Use Ehcache.getQuiet(Object) to peek into the Element to see its last access time with get

Specified by:
get in interface Ehcache
Overrides:
get in class EhcacheDecoratorAdapter
Parameters:
key - an Object value
Returns:
the element, or null, if it does not exist.
Throws:
IllegalStateException - if the cache is not Status.STATUS_ALIVE
CacheException
See Also:
Ehcache.isExpired(net.sf.ehcache.Element)

get

public Element get(Serializable key)
            throws IllegalStateException,
                   CacheException
Description copied from class: EhcacheDecoratorAdapter
Gets an element from the cache. Updates Element Statistics

Note that the Element's lastAccessTime is always the time of this get. Use Ehcache.getQuiet(Object) to peak into the Element to see its last access time with get

Specified by:
get in interface Ehcache
Overrides:
get in class EhcacheDecoratorAdapter
Parameters:
key - a serializable value
Returns:
the element, or null, if it does not exist.
Throws:
IllegalStateException - if the cache is not Status.STATUS_ALIVE
CacheException
See Also:
Ehcache.isExpired(net.sf.ehcache.Element)

getRefreshSuccessCount

public long getRefreshSuccessCount()
number of refreshes processed locally.


getName

public String getName()
Description copied from class: EhcacheDecoratorAdapter
Gets the cache name.

Specified by:
getName in interface Ehcache
Overrides:
getName in class EhcacheDecoratorAdapter

getOfferCount

public long getOfferCount()
Gets offer count.

Returns:
the offer count

getDroppedCount

public long getDroppedCount()
Gets dropped count.

Returns:
the dropped count

getProcessedCount

public long getProcessedCount()
Gets processed count.

Returns:
the processed count

getBacklogCount

public long getBacklogCount()
Gets backlog count.

Returns:
the backlog count

findRefreshedStatistic

public static Set<ExtendedStatistics.Statistic<Number>> findRefreshedStatistic(Ehcache cache)
Find refreshed counter statistic.

Parameters:
cache - the cache this statistic is attached to.
Returns:
the set

findOfferStatistic

public static Set<ExtendedStatistics.Statistic<Number>> findOfferStatistic(Ehcache cache)
Find offer statistic.

Parameters:
cache - the cache this statistic is attached to.
Returns:
the set

findDroppedStatistic

public static Set<ExtendedStatistics.Statistic<Number>> findDroppedStatistic(Ehcache cache)
Find dropped statistic.

Parameters:
cache - the cache
Returns:
the set

findProcessedStatistic

public static Set<ExtendedStatistics.Statistic<Number>> findProcessedStatistic(Ehcache cache)
Find processed statistic.

Parameters:
cache - the cache
Returns:
the set

findBacklogStatistic

public static Set<ExtendedStatistics.Statistic<Number>> findBacklogStatistic(Ehcache cache)
Find backlog statistic.

Parameters:
cache - the cache
Returns:
the set

ehcache

Copyright 2001-2017, Terracotta, Inc.