Class ExpirableCache<K,V>
java.lang.Object
edu.internet2.middleware.grouperClient.util.ExpirableCache<K,V>
- Type Parameters:
K
- key typeV
- value type
- All Implemented Interfaces:
Serializable
This is like a map, but the setters also take an expire time which
will mean the items in the cache will be automatically deleted.
Also, every so often (e.g. 2 minutes) all items are checked for expiration.
If no timetolive is set, it will default to 1 day. The max time to live is
one day.
This is synchronized so that all access is safe.
Note, evictions are check for periodically, but only when the map is accessed (and even then only every few minutes).
so you can check for evictions externally, or clear the map if you are done with it.
- Version:
- $Id: ExpirableCache.java,v 1.1 2008-11-27 14:25:50 mchyzer Exp $
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
unit of time for expirable cache -
Constructor Summary
ConstructorDescriptionExpirableCache
(int defaultTimeToLiveInMinutes) ExpirableCache
(ExpirableCache.ExpirableCacheUnit expirableCacheUnit, int defaultTimeToLive) -
Method Summary
Modifier and TypeMethodDescriptionvoid
checkForEvictions
(boolean onlyCheckIfNeeded) check and remove elements that are stalevoid
clear()
delete the cachestatic void
clearAll()
clear out all caches everywhere (session, request, context, etc)static boolean
clearCache
(String name) if there is a database clearable cache with this name, clear itget a value or null if not there or expired this will check for eviction, and evict if evictableint
number of items evicted from cacheint
number of items successfully retrieved from cacheint
number of items inserted into the cachelong
expose the length of cachekeySet()
get all keys this will check for eviction, and evict if evictablevoid
void
put a value into the cache, accept the default time to live for this cachevoid
put a value into the cache, accept the default time to live for this cachevoid
register a cache for database clearable.int
size
(boolean evictEvictables) number of elements in map (and check forstatic String
string representation of cachetoString()
string representation of cache
-
Constructor Details
-
ExpirableCache
public ExpirableCache() -
ExpirableCache
public ExpirableCache(int defaultTimeToLiveInMinutes) - Parameters:
defaultTimeToLiveInMinutes
- time in minutes is the default cache time to live for content
-
ExpirableCache
- Parameters:
defaultTimeToLive
- time in whatever unit is the default cache time to live for contentexpirableCacheUnit
- is minutes or seconds
-
-
Method Details
-
clearCache
if there is a database clearable cache with this name, clear it- Parameters:
name
-- Returns:
- true if there was such a cache
-
registerDatabaseClearableCache
register a cache for database clearable. Note you cant register one that is already there- Parameters:
name
-
-
clear
public void clear()delete the cache -
getDefaultTimeToLiveInMillis
public long getDefaultTimeToLiveInMillis()expose the length of cache- Returns:
- length of cache
-
notifyDatabaseOfChanges
public void notifyDatabaseOfChanges() -
put
put a value into the cache, accept the default time to live for this cache- Parameters:
key
-value
-
-
put
put a value into the cache, accept the default time to live for this cache- Parameters:
key
-value
-timeToLiveInMinutes
- time to live for this item in minutes. If -1 then use the default
-
clearAll
public static void clearAll()clear out all caches everywhere (session, request, context, etc) -
checkForEvictions
public void checkForEvictions(boolean onlyCheckIfNeeded) check and remove elements that are stale- Parameters:
onlyCheckIfNeeded
- true if only check every so often (e.g. every two minutes)
-
get
get a value or null if not there or expired this will check for eviction, and evict if evictable- Parameters:
key
-- Returns:
- the value or null if not there or evicted
-
keySet
get all keys this will check for eviction, and evict if evictable- Parameters:
key
-- Returns:
- the value or null if not there or evicted
-
size
public int size(boolean evictEvictables) number of elements in map (and check for- Parameters:
evictEvictables
- true if we should evict values that are stale (even if recently checked)- Returns:
- the number of elements
-
getCacheInserts
public int getCacheInserts()number of items inserted into the cache- Returns:
- Returns the cacheInserts.
-
getCacheEvictions
public int getCacheEvictions()number of items evicted from cache- Returns:
- Returns the cacheEvictions.
-
getCacheHits
public int getCacheHits()number of items successfully retrieved from cache- Returns:
- Returns the cacheHits.
-
toString
string representation of cache -
staticToString
string representation of cache- Returns:
- the string value
-