|
CoherenceTM v3.3 Copyright© 2000-2007 by Oracle Corporation |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.tangosol.util.Base
com.tangosol.net.cache.CachingMap
public class CachingMap
Map implementation that wraps two maps - a front map (assumed to be "inexpensive" and probably "incomplete") and a back map (assumed to be "complete" and "correct", but more "expensive") - using a read-through/write-through approach.
If the back map implements ObservableMap interface, the CachingMap provides four different strategies of invalidating the front map entries that have changed by other processes in the back map:
The front map implementation is assumed to be thread safe; additionally
any modifications to the front map are allowed only after the corresponding
lock is acquired against the ControlMap
.
Note: null values are not cached in the front map and therefore this implementation is not optimized for maps that allow null values to be stored.
Nested Class Summary | |
---|---|
protected class |
CachingMap.BackMapListener
MapListener for back map responsible for keeping the front map coherent with the back map. |
protected class |
CachingMap.FrontMapListener
MapListener for front map responsible for deregistering back map listeners upon front map eviction. |
Nested classes/interfaces inherited from interface java.util.Map |
---|
Map.Entry |
Field Summary | |
---|---|
static int |
LISTEN_ALL
Invalidation strategy that instructs the CachingMap to listen to all back map events; this strategy is preferred when updates to the back map are frequent and with high probability come from the outside of this CachingMap; for example multiple CachingMap instances using the same back map with a large degree of key set overlap between front maps. |
static int |
LISTEN_AUTO
Invalidation strategy that instructs the CachingMap implementation to switch automatically between LISTEN_PRESENT and LISTEN_ALL strategies based on the cache statistics. |
static int |
LISTEN_NONE
No invalidation strategy. |
static int |
LISTEN_PRESENT
Invalidation strategy that instructs the CachingMap to listen to the back map events related only to the items currently present in the front map; this strategy serves best when the changes to the back map come mostly from the CachingMap itself. |
protected int |
m_nStrategyCurrent
The current invalidation strategy, which at times could be different from the target strategy. |
protected int |
m_nStrategyTarget
The invalidation strategy that this map is to use. |
Constructor Summary | |
---|---|
CachingMap(Map mapFront,
Map mapBack)
Construct a CachingMap using two specified maps: FrontMap (aka "cache", "near" or "shallow") and BackMap (aka "actual", "real" or "deep"). |
|
CachingMap(Map mapFront,
Map mapBack,
int nStrategy)
Construct a CachingMap using two specified maps: FrontMap (aka "cache", "near" or "shallow") and BackMap (aka "actual", "real" or "deep") and using the specified front map invalidation strategy. |
Method Summary | |
---|---|
void |
clear()
Clears both the front and back maps. |
boolean |
containsKey(Object oKey)
Check whether or not this map contains a mapping for the specified key. |
boolean |
containsValue(Object oValue)
Check whether or not this CachingMap maps one or more keys to the specified value. |
protected int |
ensureInvalidationStrategy()
Ensure that a strategy has been choosen and that any appropriate global listeners have been registered. |
Set |
entrySet()
Obtain an set view of the mappings contained in this map. |
boolean |
equals(Object o)
Compares the specified object with this map for equality. |
Object |
get(Object oKey)
Obtain the value to which this map maps the specified key. |
Map |
getAll(Collection colKeys)
Get all the specified keys, if they are in the cache. |
double |
getAverageGetMillis()
Determine the average number of milliseconds per get() invocation since the cache statistics were last reset. |
double |
getAverageHitMillis()
Determine the average number of milliseconds per get() invocation that is a hit. |
double |
getAverageMissMillis()
Determine the average number of milliseconds per get() invocation that is a miss. |
double |
getAveragePutMillis()
Determine the average number of milliseconds per put() invocation since the cache statistics were last reset. |
Map |
getBackMap()
Obtain the back map reference. |
long |
getCacheHits()
Determine the rough number of cache hits since the cache statistics were last reset. |
long |
getCacheHitsMillis()
Determine the total number of milliseconds (since that last statistics reset) for the get() operations for which an entry existed in this map. |
long |
getCacheMisses()
Determine the rough number of cache misses since the cache statistics were last reset. |
long |
getCacheMissesMillis()
Determine the total number of milliseconds (since that last statistics reset) for the get() operations for which no entry existed in this map. |
CacheStatistics |
getCacheStatistics()
Obtain the CacheStatistics for this cache. |
ConcurrentMap |
getControlMap()
Obtain the ConcurrentMap that should be used to synchronize the front map modification access. |
Map |
getFrontMap()
Obtain the front map reference. |
double |
getHitProbability()
Determine the rough probability (0 <= p <= 1) that the next invocation will be a hit, based on the statistics collected since the last reset of the cache statistics. |
long |
getInvalidationHits()
Determine the rough number of front map invalidation hits since the cache statistics were last reset. |
long |
getInvalidationMisses()
Determine the rough number of front map invalidation misses since the cache statistics were last reset. |
int |
getInvalidationStrategy()
Obtain the invalidation strategy used by this CachingMap. |
long |
getTotalGets()
Determine the total number of get() operations since the cache statistics were last reset. |
long |
getTotalGetsMillis()
Determine the total number of milliseconds spent on get() operations since the cache statistics were last reset. |
long |
getTotalPuts()
Determine the total number of put() operations since the cache statistics were last reset. |
long |
getTotalPutsMillis()
Determine the total number of milliseconds spent on put() operations since the cache statistics were last reset. |
long |
getTotalRegisterListener()
Determine the total number of registerListener(Object oKey)
operations since the cache statistics were last reset. |
int |
hashCode()
Return the hash code value for this map. |
protected MapListener |
instantiateBackMapListener()
Factory pattern: instantiate back map listener. |
protected CachingMap.FrontMapListener |
instantiateFrontMapListener()
Factory pattern: instantiate front map listener. |
protected void |
invalidateFront(Object oKey)
Invalidate the key from the front. |
protected boolean |
isCoherent()
Determine if changes to the back map affect the front map so that data in the front map stays in sync. |
boolean |
isEmpty()
Check whether or not this map is empty. |
Set |
keySet()
Obtain an set view of the keys contained in this map. |
Object |
put(Object oKey,
Object oValue)
Associates the specified value with the specified key in this map. |
Object |
put(Object oKey,
Object oValue,
boolean fReturn,
long cMillis)
Implementation of put method that optionally skips the return value retrieval and allows to specify an expiry for the cache entry. |
void |
putAll(Map map)
Copy all of the mappings from the specified map to this map. |
protected void |
registerFrontListener()
Register the global front map listener. |
protected void |
registerListener()
Register the global back map listener. |
protected void |
registerListener(Object oKey)
Register the back map listener for the specified key. |
void |
release()
Release the CachingMap. |
Object |
remove(Object oKey)
Remove the mapping for this key from this map if present. |
void |
resetHitStatistics()
Reset the cache statistics. |
protected void |
resetInvalidationStrategy()
Reset the "current invalidation strategy" flag. |
int |
size()
Return the number of key-value mappings in this map. |
String |
toString()
For debugging purposes, format the contents of the CachingMap in a human readable format. |
protected void |
unregisterFrontListener()
Unregister the global front map listener. |
protected void |
unregisterListener()
Unregister the global back map listener. |
protected void |
unregisterListener(Object oKey)
Unregister the back map listener for the specified key. |
protected void |
validate(MapEvent evt)
Validate the front map entry for the specified back map event. |
Collection |
values()
Obtain an collection of the values contained in this map. |
Field Detail |
---|
public static final int LISTEN_NONE
public static final int LISTEN_PRESENT
public static final int LISTEN_ALL
public static final int LISTEN_AUTO
protected int m_nStrategyTarget
protected int m_nStrategyCurrent
Constructor Detail |
---|
public CachingMap(Map mapFront, Map mapBack)
LISTEN_AUTO
strategy.
mapBack
- back mapmapFront
- front mapSeppukuMapListener
public CachingMap(Map mapFront, Map mapBack, int nStrategy)
mapFront
- front mapmapBack
- back mapnStrategy
- specifies the strategy used for the front map
invalidation; valid values are LISTEN_* constantsMethod Detail |
---|
public void release()
public Map getFrontMap()
Note: direct modifications of the returned map may cause an unpredictable behavior of the CachingMap.
public Map getBackMap()
Note: direct modifications of the returned map may cause an unpredictable behavior of the CachingMap.
public int getInvalidationStrategy()
public ConcurrentMap getControlMap()
protected boolean isCoherent()
public CacheStatistics getCacheStatistics()
public void clear()
clear
in interface Map
public boolean containsKey(Object oKey)
containsKey
in interface Map
public boolean containsValue(Object oValue)
containsValue
in interface Map
public Set entrySet()
entrySet
in interface Map
public Object get(Object oKey)
get
in interface Map
oKey
- the key object
public Map getAll(Collection colKeys)
Note: this implementation does not differentiate between missing keys or null values stored in the back map; in both cases the returned map will not contain the corresponding entry.
colKeys
- a collection of keys that may be in the named cache
public boolean isEmpty()
isEmpty
in interface Map
public Set keySet()
keySet
in interface Map
public Object put(Object oKey, Object oValue)
put
in interface Map
oKey
- key with which the specified value is to be associatedoValue
- value to be associated with the specified key
public Object put(Object oKey, Object oValue, boolean fReturn, long cMillis)
oKey
- the keyoValue
- the valuefReturn
- if true, the return value is required; otherwise
the return value will be ignoredcMillis
- the number of milliseconds until the cache entry will
expire
UnsupportedOperationException
- if the requested expiry is a
positive value and either the front map or the back map
implementations do not support the expiration functionalityCacheMap.put(Object oKey, Object oValue, long cMillis)
public void putAll(Map map)
putAll
in interface Map
map
- Mappings to be stored in this mapprotected void invalidateFront(Object oKey)
oKey
- the key to invalidateprotected void validate(MapEvent evt)
evt
- the MapEvent from the back mappublic Object remove(Object oKey)
remove
in interface Map
oKey
- key whose mapping is to be removed from the map
public int size()
size
in interface Map
public Collection values()
values
in interface Map
public long getTotalGets()
getTotalGets
in interface CacheStatistics
public long getTotalGetsMillis()
getTotalGetsMillis
in interface CacheStatistics
public double getAverageGetMillis()
getAverageGetMillis
in interface CacheStatistics
public long getTotalPuts()
getTotalPuts
in interface CacheStatistics
public long getTotalPutsMillis()
getTotalPutsMillis
in interface CacheStatistics
public double getAveragePutMillis()
getAveragePutMillis
in interface CacheStatistics
public long getCacheHits()
getCacheHits
in interface CacheStatistics
get(java.lang.Object)
calls that have been served by
existing cache entriespublic long getCacheHitsMillis()
getCacheHitsMillis
in interface CacheStatistics
public double getAverageHitMillis()
getAverageHitMillis
in interface CacheStatistics
public long getCacheMisses()
getCacheMisses
in interface CacheStatistics
get(Object)
calls that failed to find an existing
cache entry because the requested key was not in the cachepublic long getCacheMissesMillis()
getCacheMissesMillis
in interface CacheStatistics
public double getAverageMissMillis()
getAverageMissMillis
in interface CacheStatistics
public double getHitProbability()
getHitProbability
in interface CacheStatistics
public void resetHitStatistics()
resetHitStatistics
in interface CacheStatistics
public long getInvalidationHits()
public long getInvalidationMisses()
public long getTotalRegisterListener()
registerListener(Object oKey)
operations since the cache statistics were last reset.
public boolean equals(Object o)
equals
in interface Map
o
- object to be compared for equality with this map
public int hashCode()
hashCode
in interface Map
public String toString()
protected void registerListener()
protected void unregisterListener()
protected void registerListener(Object oKey)
oKey
- the keyprotected void unregisterListener(Object oKey)
oKey
- the keyprotected void registerFrontListener()
protected void unregisterFrontListener()
protected int ensureInvalidationStrategy()
protected void resetInvalidationStrategy()
protected MapListener instantiateBackMapListener()
protected CachingMap.FrontMapListener instantiateFrontMapListener()
|
CoherenceTM v3.3 Copyright© 2000-2007 by Oracle Corporation |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |