Top Description Fields Methods
net.sf.ehcache.store

public Interface Store

Known Direct Subinterfaces
net.sf.ehcache.store.TerracottaStore, net.sf.ehcache.store.AuthoritativeTier
Known Direct Implementers
net.sf.ehcache.store.AbstractCopyingCacheStore, net.sf.ehcache.store.AbstractStore, net.sf.ehcache.store.CacheStore, net.sf.ehcache.store.ElementIdAssigningStore, net.sf.ehcache.store.MemoryStore
Imports
net.sf.ehcache.CacheException, .Element, .Status, net.sf.ehcache.search.Attribute, .Results, .SearchException, net.sf.ehcache.search.attribute.AttributeExtractor, net.sf.ehcache.terracotta.TerracottaNotRunningException, net.sf.ehcache.writer.CacheWriterManager, java.io.IOException, java.util.Collection, .List, .Map, .Set

This is the interface for all stores. A store is a physical counterpart to a cache, which is a logical concept.
Author
Greg Luck
Version
$Id: Store.java 10789 2018-04-26 02:08:13Z adahanne $

Field Summary

Modifier and TypeField and Description
public static final String
CLUSTER_COHERENT

clusterCoherent property

public static final String
NODE_COHERENT

nodeCoherent property

Method Summary

Modifier and TypeMethod and Description
public void
addStoreListener(StoreListener listener)

Add a listener to the store.

public boolean

Returns:

true if the store write buffer is backed up.
bufferFull
()

Some store types, such as the disk stores can fill their write buffers if puts come in too fast.

public boolean

Returns:

true if found. No check is made to see if the Element is expired. 1.2
containsKey
(Object
The Element key
key
)

A check to see if a key is in the Store.

public boolean

Returns:

true if found. No check is made to see if the Element is expired.
containsKeyInMemory
(Object
The Element key
key
)

A check to see if a key is in the Store and is currently held in memory.

public boolean

Returns:

true if found. No check is made to see if the Element is expired.
containsKeyOffHeap
(Object
The Element key
key
)

A check to see if a key is in the Store and is currently held off-heap.

public boolean

Returns:

true if found. No check is made to see if the Element is expired.
containsKeyOnDisk
(Object
The Element key
key
)

A check to see if a key is in the Store and is currently held on disk.

public void
dispose()

Prepares for shutdown.

public Results

Returns:

query results
executeQuery
(StoreQuery
query to execute
query
)

Execute the given query on this store

public void
expireElements()

Expire all elements.

public void
flush()

Flush elements to persistent store.

public Element
get(Object key)

Gets an item from the cache.

public Map<Object, Element>

Returns:

a map of keys and their corresponding values
getAll
(Collection<?>
a collection of keys to look for
keys
)

Retries the elements associated with a set of keys and update the statistics Keys which are not present in the cache will have null values associated with them in the returned map

public Map<Object, Element>

Returns:

a map of keys and their corresponding values
getAllQuiet
(Collection<?>
a collection of keys to look for
keys
)

Retries the elements associated with a set of keys without updating the statistics Keys which are not present in the cache will have null values associated with them in the returned map

public Policy

Returns:

the current eviction policy. This may not be the configured policy, if it has been dynamically set.
getInMemoryEvictionPolicy
()

public int

Returns:

the count of the Elements in the Store and in-memory on the local machine
getInMemorySize
()

Returns the current local in-memory store size

public long

Returns:

the approximate in-memory size of the store in bytes
getInMemorySizeInBytes
()

Gets the size of the in-memory portion of the store, in bytes.

public Object

Returns:

some internal context (probably null)
getInternalContext
()

This should not be used, and will generally return null

public List<E>

Returns:

An List of java.io.Serializable keys
getKeys
()

Gets an Array of the keys for all elements in the disk store.

public Object

Returns:

implementation specific management bean
getMBean
()

Optional implementation specific MBean exposed by the store.

public int

Returns:

the count of the Elements in the Store and off-heap on the local machine
getOffHeapSize
()

Returns the current local off-heap store size

public long

Returns:

the approximate off-heap size of the store in bytes
getOffHeapSizeInBytes
()

Gets the size of the off-heap portion of the store, in bytes.

public int

Returns:

the count of the Elements in the Store and on-disk on the local machine
getOnDiskSize
()

Returns the current local on-disk store size

public long

Returns:

the on-disk size of the store in bytes
getOnDiskSizeInBytes
()

Gets the size of the on-disk portion of the store, in bytes.

public Element

Returns:

The element
getQuiet
(Object key)

Gets an Element from the Store, without updating statistics

public <
type of the attribute
T
>
Attribute<T>

Returns:

the search attribute or null if non-existent
getSearchAttribute
(String
the name of the attribute to retrieve
attributeName
)

Retrieve the given named search attribute

public Set<Attribute<T>>

Returns:

all search attributes known to this store at the time of invoking the method
getSearchAttributes
()

public int

Returns:

the count of the Elements in the Store on the local machine
getSize
()

Returns the current local store size

public Status
getStatus()

Returns the cache status.

public int

Returns:

the count of the Elements in the Store across the cluster
getTerracottaClusteredSize
()

Returns the current Terracotta clustered store size

public boolean

Returns:

true if at least one partially sized element may be in the cache
hasAbortedSizeOf
()

Checks if the cache may contain elements for which the SizeOf engine gave up and only partially calculated the size.

public boolean

Returns:

true if the store is coherent; or false if the store potentially splits the cache storage with another store or isn't internally coherent
isCacheCoherent
()

Indicates whether this store provides a coherent view of all the elements in a cache.

public boolean

Returns:

true if the cache is in coherent mode cluster-wide, false otherwise
isClusterCoherent
()

Returns true if the cache is in coherent mode cluster-wide.

public boolean

Returns:

true if the cache is in coherent mode cluster-wide, false otherwise
isNodeCoherent
()

Returns true if the cache is in coherent mode for the current node.

public boolean

Returns:

true if this is a new put for the key or element is null. Returns false if it was an update.
put
(Element element)

Puts an item into the store.

public void
putAll(Collection<Element>
Collection of elements to be put in the store
elements
)

Puts a collection of elements into the store.

public Element

Returns:

the element previously cached for this key, or null if none.
putIfAbsent
(Element
element to be added
element
)

Put an element in the store if no element is currently mapped to the elements key.

public boolean

Returns:

true if this is a new put for the key or element is null. Returns false if it was an update.
putWithWriter
(Element element, CacheWriterManager writerManager)

Puts an item into the store and the cache writer manager in an atomic operation

public void
recalculateSize(Object
the key
key
)

Recalculate size of the element mapped to the key

public Element
remove(Object key)

Removes an item from the cache.

public void
removeAll(Collection<?> keys)

Removes a collection of elements from the cache.

public void
removeAll()

Remove all of the elements from the store.

public Element

Returns:

the Element removed or null if no Element was removed
removeElement
(Element
Element to be removed
element
,
ElementValueComparator
ElementValueComparator to use to compare elements
comparator
)

Remove the Element mapped to the key for the supplied element if the value of the supplied Element is equal to the value of the cached Element.

public void
removeStoreListener(StoreListener listener)

Remove listener from store.

public Element
removeWithWriter(Object key, CacheWriterManager writerManager)

Removes an item from the store and the cache writer manager in an atomic operation.

public boolean

Returns:

true is the Element was replaced
replace
(Element
Element to be test against
old
,
Element
Element to be cached
element
,
ElementValueComparator
ElementValueComparator to use to compare elements
comparator
)

Replace the cached element only if the value of the current Element is equal to the value of the supplied old Element.

public Element

Returns:

the Element previously cached for this key, or null if no Element was cached
replace
(Element
Element to be cached
element
)

Replace the cached element only if an Element is currently cached for this key

public void
setAttributeExtractors(Map<String, AttributeExtractor> extractors)

Inform this store of the configured attribute extractors.

public void
setInMemoryEvictionPolicy(Policy
the new policy
policy
)

Sets the eviction policy strategy.

public void
setNodeCoherent(boolean
true transitions to coherent mode, false to incoherent mode
coherent
)

Sets the cache in coherent or incoherent mode for the current node depending on the parameter.

public void
waitUntilClusterCoherent()

This method waits until the cache is in coherent mode in all the connected nodes.

Field Detail

CLUSTER_COHERENTback to summary
public static final String CLUSTER_COHERENT

clusterCoherent property

NODE_COHERENTback to summary
public static final String NODE_COHERENT

nodeCoherent property

Method Detail

addStoreListenerback to summary
public void addStoreListener(StoreListener listener)

Add a listener to the store.

bufferFullback to summary
public boolean bufferFull()

Some store types, such as the disk stores can fill their write buffers if puts come in too fast. The thread will wait for a short time before checking again.

Returns:boolean

true if the store write buffer is backed up.

containsKeyback to summary
public boolean containsKey(Object key)

A check to see if a key is in the Store.

Parameters
key:Object

The Element key

Returns:boolean

true if found. No check is made to see if the Element is expired. 1.2

containsKeyInMemoryback to summary
public boolean containsKeyInMemory(Object key)

A check to see if a key is in the Store and is currently held in memory.

Parameters
key:Object

The Element key

Returns:boolean

true if found. No check is made to see if the Element is expired.

containsKeyOffHeapback to summary
public boolean containsKeyOffHeap(Object key)

A check to see if a key is in the Store and is currently held off-heap.

Parameters
key:Object

The Element key

Returns:boolean

true if found. No check is made to see if the Element is expired.

containsKeyOnDiskback to summary
public boolean containsKeyOnDisk(Object key)

A check to see if a key is in the Store and is currently held on disk.

Parameters
key:Object

The Element key

Returns:boolean

true if found. No check is made to see if the Element is expired.

disposeback to summary
public void dispose()

Prepares for shutdown.

executeQueryback to summary
public Results executeQuery(StoreQuery query) throws SearchException

Execute the given query on this store

Parameters
query:StoreQuery

query to execute

Returns:Results

query results

expireElementsback to summary
public void expireElements()

Expire all elements.

flushback to summary
public void flush() throws IOException

Flush elements to persistent store.

Exceptions
IOException:
if any IO error occurs
getback to summary
public Element get(Object key)

Gets an item from the cache.

getAllback to summary
public Map<Object, Element> getAll(Collection<?> keys)

Retries the elements associated with a set of keys and update the statistics Keys which are not present in the cache will have null values associated with them in the returned map

Parameters
keys:Collection<?>

a collection of keys to look for

Returns:Map<Object, Element>

a map of keys and their corresponding values

getAllQuietback to summary
public Map<Object, Element> getAllQuiet(Collection<?> keys)

Retries the elements associated with a set of keys without updating the statistics Keys which are not present in the cache will have null values associated with them in the returned map

Parameters
keys:Collection<?>

a collection of keys to look for

Returns:Map<Object, Element>

a map of keys and their corresponding values

getInMemoryEvictionPolicyback to summary
public Policy getInMemoryEvictionPolicy()
Returns:Policy

the current eviction policy. This may not be the configured policy, if it has been dynamically set.

See Also
setInMemoryEvictionPolicy(Policy)
getInMemorySizeback to summary
public int getInMemorySize()

Returns the current local in-memory store size

Returns:int

the count of the Elements in the Store and in-memory on the local machine

getInMemorySizeInBytesback to summary
public long getInMemorySizeInBytes()

Gets the size of the in-memory portion of the store, in bytes.

This method may be expensive to run, depending on implementation. Implementers may choose to return an approximate size.

Returns:long

the approximate in-memory size of the store in bytes

getInternalContextback to summary
public Object getInternalContext()

This should not be used, and will generally return null

Returns:Object

some internal context (probably null)

getKeysback to summary
public List<E> getKeys()

Gets an Array of the keys for all elements in the disk store.

Returns:List<E>

An List of java.io.Serializable keys

getMBeanback to summary
public Object getMBean()

Optional implementation specific MBean exposed by the store.

Returns:Object

implementation specific management bean

getOffHeapSizeback to summary
public int getOffHeapSize()

Returns the current local off-heap store size

Returns:int

the count of the Elements in the Store and off-heap on the local machine

getOffHeapSizeInBytesback to summary
public long getOffHeapSizeInBytes()

Gets the size of the off-heap portion of the store, in bytes.

Returns:long

the approximate off-heap size of the store in bytes

getOnDiskSizeback to summary
public int getOnDiskSize()

Returns the current local on-disk store size

Returns:int

the count of the Elements in the Store and on-disk on the local machine

getOnDiskSizeInBytesback to summary
public long getOnDiskSizeInBytes()

Gets the size of the on-disk portion of the store, in bytes.

Returns:long

the on-disk size of the store in bytes

getQuietback to summary
public Element getQuiet(Object key)

Gets an Element from the Store, without updating statistics

Returns:Element

The element

getSearchAttributeback to summary
public <T> Attribute<T> getSearchAttribute(String attributeName)

Retrieve the given named search attribute

Parameters
<T>
type of the attribute
attributeName:String

the name of the attribute to retrieve

Returns:Attribute<T>

the search attribute or null if non-existent

getSearchAttributesback to summary
public Set<Attribute<T>> getSearchAttributes()
Returns:Set<Attribute<T>>

all search attributes known to this store at the time of invoking the method

getSizeback to summary
public int getSize()

Returns the current local store size

Returns:int

the count of the Elements in the Store on the local machine

getStatusback to summary
public Status getStatus()

Returns the cache status.

getTerracottaClusteredSizeback to summary
public int getTerracottaClusteredSize()

Returns the current Terracotta clustered store size

Returns:int

the count of the Elements in the Store across the cluster

hasAbortedSizeOfback to summary
public boolean hasAbortedSizeOf()

Checks if the cache may contain elements for which the SizeOf engine gave up and only partially calculated the size.

Returns:boolean

true if at least one partially sized element may be in the cache

isCacheCoherentback to summary
public boolean isCacheCoherent()

Indicates whether this store provides a coherent view of all the elements in a cache. Note that this is same as calling isClusterCoherent() (introduced since 2.0) Use isNodeCoherent() to find out if the cache is coherent in the current node in the cluster

Returns:boolean

true if the store is coherent; or false if the store potentially splits the cache storage with another store or isn't internally coherent

Since
1.7
isClusterCoherentback to summary
public boolean isClusterCoherent() throws TerracottaNotRunningException

Returns true if the cache is in coherent mode cluster-wide. Returns false otherwise.

It applies to coherent clustering mechanisms only e.g. Terracotta

Returns:boolean

true if the cache is in coherent mode cluster-wide, false otherwise

Since
2.0
isNodeCoherentback to summary
public boolean isNodeCoherent() throws TerracottaNotRunningException

Returns true if the cache is in coherent mode for the current node. Returns false otherwise.

It applies to coherent clustering mechanisms only e.g. Terracotta

Returns:boolean

true if the cache is in coherent mode cluster-wide, false otherwise

Since
2.0
putback to summary
public boolean put(Element element) throws CacheException

Puts an item into the store.

Returns:boolean

true if this is a new put for the key or element is null. Returns false if it was an update.

putAllback to summary
public void putAll(Collection<Element> elements) throws CacheException

Puts a collection of elements into the store.

Parameters
elements:Collection<Element>

Collection of elements to be put in the store

putIfAbsentback to summary
public Element putIfAbsent(Element element) throws NullPointerException

Put an element in the store if no element is currently mapped to the elements key.

Parameters
element:Element

element to be added

Returns:Element

the element previously cached for this key, or null if none.

Exceptions
NullPointerException:
if the element is null, or has a null key
putWithWriterback to summary
public boolean putWithWriter(Element element, CacheWriterManager writerManager) throws CacheException

Puts an item into the store and the cache writer manager in an atomic operation

Returns:boolean

true if this is a new put for the key or element is null. Returns false if it was an update.

recalculateSizeback to summary
public void recalculateSize(Object key)

Recalculate size of the element mapped to the key

Parameters
key:Object

the key

removeback to summary
public Element remove(Object key)

Removes an item from the cache.

Since
signature changed in 1.2 from boolean to Element to support notifications
removeAllback to summary
public void removeAll(Collection<?> keys)

Removes a collection of elements from the cache.

removeAllback to summary
public 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.

removeElementback to summary
public Element removeElement(Element element, ElementValueComparator comparator) throws NullPointerException

Remove the Element mapped to the key for the supplied element if the value of the supplied Element is equal to the value of the cached Element. This is a CAS operation. It is consistent even against a distributed cache that is not coherent. If the old value is stale when this operation is attempted the remove does not take place.

Parameters
element:Element

Element to be removed

comparator:ElementValueComparator

ElementValueComparator to use to compare elements

Returns:Element

the Element removed or null if no Element was removed

Exceptions
NullPointerException:
if the element is null, or has a null key
removeStoreListenerback to summary
public void removeStoreListener(StoreListener listener)

Remove listener from store.

removeWithWriterback to summary
public Element removeWithWriter(Object key, CacheWriterManager writerManager) throws CacheException

Removes an item from the store and the cache writer manager in an atomic operation.

replaceback to summary
public boolean replace(Element old, Element element, ElementValueComparator comparator) throws NullPointerException, IllegalArgumentException

Replace the cached element only if the value of the current Element is equal to the value of the supplied old Element.

Parameters
old:Element

Element to be test against

element:Element

Element to be cached

comparator:ElementValueComparator

ElementValueComparator to use to compare elements

Returns:boolean

true is the Element was replaced

Exceptions
NullPointerException:
if the either Element is null or has a null key
IllegalArgumentException:
if the two Element keys are non-null but not equal
replaceback to summary
public Element replace(Element element) throws NullPointerException

Replace the cached element only if an Element is currently cached for this key

Parameters
element:Element

Element to be cached

Returns:Element

the Element previously cached for this key, or null if no Element was cached

Exceptions
NullPointerException:
if the Element is null or has a null key
setAttributeExtractorsback to summary
public void setAttributeExtractors(Map<String, AttributeExtractor> extractors)

Inform this store of the configured attribute extractors. Stores that will not invoke extractors are free to ignore this call

setInMemoryEvictionPolicyback to summary
public void setInMemoryEvictionPolicy(Policy policy)

Sets the eviction policy strategy. The Store will use a policy at startup. The store may allow changing the eviction policy strategy dynamically. Otherwise implementations will throw an exception if this method is called.

Parameters
policy:Policy

the new policy

setNodeCoherentback to summary
public void setNodeCoherent(boolean coherent) throws UnsupportedOperationException, TerracottaNotRunningException

Sets the cache in coherent or incoherent mode for the current node depending on the parameter. Calling setNodeCoherent(true) when the cache is already in coherent mode or calling setNodeCoherent(false) when already in incoherent mode will be a no-op.

It applies to coherent clustering mechanisms only e.g. Terracotta

Parameters
coherent:boolean

true transitions to coherent mode, false to incoherent mode

Exceptions
UnsupportedOperationException:
if this store does not support cache coherence, like RMI replication
Since
2.0
waitUntilClusterCoherentback to summary
public void waitUntilClusterCoherent() throws UnsupportedOperationException, TerracottaNotRunningException, InterruptedException

This method waits until the cache is in coherent mode in all the connected nodes. If the cache is already in coherent mode it returns immediately

It applies to coherent clustering mechanisms only e.g. Terracotta

Exceptions
UnsupportedOperationException:
if this store does not support cache coherence, like RMI replication
Since
2.0