ehcache

net.sf.ehcache.store
Class MemoryStore

java.lang.Object
  extended bynet.sf.ehcache.store.MemoryStore
All Implemented Interfaces:
Store
Direct Known Subclasses:
FifoMemoryStore, LfuMemoryStore, LruMemoryStore

public abstract class MemoryStore
extends java.lang.Object
implements Store

An abstract class for the Memory Stores. All Memory store implementations for different policies (e.g: FIFO, LFU, LRU, etc.) should extend this class.

Version:
$Id: MemoryStore.java 52 2006-04-24 14:50:03Z gregluck $
Author:
Surya Suravarapu

Field Summary
protected  Cache cache
          The cache this store is associated with.
protected  DiskStore diskStore
          The DiskStore associated with this MemoryStore.
protected  java.util.Map map
          Map where items are stored by key.
protected  Status status
          status.
 
Constructor Summary
protected MemoryStore(Cache cache, DiskStore diskStore)
          Constructs things that all MemoryStores have in common.
 
Method Summary
protected  void clear()
          Clears any data structures and places it back to its state when it was first created.
 boolean containsKey(java.lang.Object key)
          An unsynchronized check to see if a key is in the Store.
static MemoryStore create(Cache cache, DiskStore diskStore)
          A factory method to create a MemoryStore.
 void dispose()
          Prepares for shutdown.
protected  void doPut(Element element)
          Allow specialised actions over adding the element to the map.
protected  void evict(Element element)
          Evict the Element.
 void flush()
          Flush to disk.
 Element get(java.lang.Object key)
          Gets an item from the cache.
 java.lang.Object[] getKeyArray()
          Gets an Array of the keys for all elements in the memory cache.
 Element getQuiet(java.lang.Object key)
          Gets an item from the cache, without updating Element statistics.
 int getSize()
          Returns the current cache size.
 long getSizeInBytes()
          Measures the size of the memory store by measuring the serialized size of all elements.
 Status getStatus()
          Gets the status of the MemoryStore.
protected  boolean isFull()
          An algorithm to tell if the MemoryStore is at or beyond its carrying capacity.
protected  void notifyExpiry(Element element)
          Before eviction elements are checked.
protected  void notifyingRemoveAll()
          If there are registered CacheEventListeners they are notified of the expiry or removal of the Element as each is removed.
 void put(Element element)
          Puts an item in the cache.
 Element remove(java.lang.Object key)
          Removes an Element from the store.
 void removeAll()
          Remove all of the elements from the store.
protected  void spoolAllToDisk()
          Spools all elements to disk, in preparation for shutdown.
protected  void spoolToDisk(Element element)
          Puts the element in the DiskStore.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cache

protected Cache cache
The cache this store is associated with.


map

protected java.util.Map map
Map where items are stored by key.


diskStore

protected final DiskStore diskStore
The DiskStore associated with this MemoryStore.


status

protected Status status
status.

Constructor Detail

MemoryStore

protected MemoryStore(Cache cache,
                      DiskStore diskStore)
Constructs things that all MemoryStores have in common.

Parameters:
cache -
diskStore -
Method Detail

create

public static MemoryStore create(Cache cache,
                                 DiskStore diskStore)
A factory method to create a MemoryStore.

Parameters:
cache -
diskStore -
Returns:
an instance of a MemoryStore, configured with the appropriate eviction policy

put

public final void put(Element element)
               throws CacheException
Puts an item in the cache. Note that this automatically results in LruMemoryStore.SpoolingLinkedHashMap.removeEldestEntry(java.util.Map.Entry) being called.

Specified by:
put in interface Store
Parameters:
element - the element to add
Throws:
CacheException

doPut

protected void doPut(Element element)
              throws CacheException
Allow specialised actions over adding the element to the map.

Parameters:
element -
Throws:
CacheException

get

public final Element get(java.lang.Object key)
Gets an item from the cache.

The last access time in Element is updated.

Specified by:
get in interface Store
Parameters:
key - the cache key
Returns:
the element, or null if there was no match for the key

getQuiet

public final Element getQuiet(java.lang.Object key)
Gets an item from the cache, without updating Element statistics.

Parameters:
key - the cache key
Returns:
the element, or null if there was no match for the key

remove

public final Element remove(java.lang.Object key)
Removes an Element from the store.

Specified by:
remove in interface Store
Parameters:
key - the key of the Element, usually a String
Returns:
the Element if one was found, else null

removeAll

public final void removeAll()
                     throws CacheException
Remove all of the elements from the store.

If there are registered CacheEventListeners they are notified of the expiry or removal of the Element as each is removed.

Specified by:
removeAll in interface Store
Throws:
CacheException

clear

protected final void clear()
Clears any data structures and places it back to its state when it was first created.


notifyingRemoveAll

protected final void notifyingRemoveAll()
                                 throws CacheException
If there are registered CacheEventListeners they are notified of the expiry or removal of the Element as each is removed.

Throws:
CacheException

dispose

public final void dispose()
Prepares for shutdown.

Specified by:
dispose in interface Store

flush

public final void flush()
Flush to disk.


spoolAllToDisk

protected final void spoolAllToDisk()
Spools all elements to disk, in preparation for shutdown.

Relies on being called from a synchronized method

This revised implementation is a little slower but avoids using increased memory during the method.


spoolToDisk

protected final void spoolToDisk(Element element)
Puts the element in the DiskStore. Should only be called if Cache.isOverflowToDisk() is true

Relies on being called from a synchronized method

Parameters:
element - The Element

getStatus

public final Status getStatus()
Gets the status of the MemoryStore.

Specified by:
getStatus in interface Store

getKeyArray

public final java.lang.Object[] getKeyArray()
Gets an Array of the keys for all elements in the memory cache.

Does not check for expired entries

Returns:
An Object[]

getSize

public final int getSize()
Returns the current cache size.

Specified by:
getSize in interface Store
Returns:
The size value

containsKey

public final boolean containsKey(java.lang.Object key)
An unsynchronized check to see if a key is in the Store. No check is made to see if the Element is expired.

Specified by:
containsKey in interface Store
Parameters:
key - The Element key
Returns:
true if found. If this method return false, it means that an Element with the given key is definitely not in the MemoryStore. If it returns true, there is an Element there. An attempt to get it may return null if the Element has expired.

getSizeInBytes

public final long getSizeInBytes()
                          throws CacheException
Measures the size of the memory store by measuring the serialized size of all elements.

Warning: This method can be very expensive to run. Allow approximately 1 second per 1MB of entries. Running this method could create liveness problems because the object lock is held for a long period

Returns:
the size, in bytes
Throws:
CacheException

evict

protected final void evict(Element element)
                    throws CacheException
Evict the Element.

Evict means that the Element is:

Parameters:
element - the Element to be evicted.
Throws:
CacheException

notifyExpiry

protected final void notifyExpiry(Element element)
Before eviction elements are checked.

Parameters:
element -

isFull

protected final boolean isFull()
An algorithm to tell if the MemoryStore is at or beyond its carrying capacity.


ehcache

true