Package net.sf.ehcache.store
Interface Store
-
- All Known Subinterfaces:
AuthoritativeTier,TerracottaStore
- All Known Implementing Classes:
AbstractStore,AbstractTransactionStore,CacheStore,CopyingCacheStore,DiskStore,ElementIdAssigningStore,JtaLocalTransactionStore,LegacyStoreWrapper,LocalTransactionStore,LruMemoryStore,MemoryStore,TerracottaTransactionalCopyingCacheStore,TxCopyingCacheStore,XATransactionStore
public interface StoreThis is the interface for all stores. A store is a physical counterpart to a cache, which is a logical concept.- Version:
- $Id$
- Author:
- Greg Luck
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringCLUSTER_COHERENTclusterCoherent propertystatic java.lang.StringNODE_COHERENTnodeCoherent property
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voidaddStoreListener(StoreListener listener)Add a listener to the store.booleanbufferFull()Some store types, such as the disk stores can fill their write buffers if puts come in too fast.booleancontainsKey(java.lang.Object key)A check to see if a key is in the Store.booleancontainsKeyInMemory(java.lang.Object key)A check to see if a key is in the Store and is currently held in memory.booleancontainsKeyOffHeap(java.lang.Object key)A check to see if a key is in the Store and is currently held off-heap.booleancontainsKeyOnDisk(java.lang.Object key)A check to see if a key is in the Store and is currently held on disk.voiddispose()Prepares for shutdown.ResultsexecuteQuery(StoreQuery query)Execute the given query on this storevoidexpireElements()Expire all elements.voidflush()Flush elements to persistent store.Elementget(java.lang.Object key)Gets an item from the cache.java.util.Map<java.lang.Object,Element>getAll(java.util.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 mapjava.util.Map<java.lang.Object,Element>getAllQuiet(java.util.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 mapPolicygetInMemoryEvictionPolicy()intgetInMemorySize()Returns the current local in-memory store sizelonggetInMemorySizeInBytes()Gets the size of the in-memory portion of the store, in bytes.java.lang.ObjectgetInternalContext()This should not be used, and will generally return nulljava.util.ListgetKeys()Gets an Array of the keys for all elements in the disk store.java.lang.ObjectgetMBean()Optional implementation specific MBean exposed by the store.intgetOffHeapSize()Returns the current local off-heap store sizelonggetOffHeapSizeInBytes()Gets the size of the off-heap portion of the store, in bytes.intgetOnDiskSize()Returns the current local on-disk store sizelonggetOnDiskSizeInBytes()Gets the size of the on-disk portion of the store, in bytes.ElementgetQuiet(java.lang.Object key)Gets anElementfrom the Store, without updating statistics<T> Attribute<T>getSearchAttribute(java.lang.String attributeName)Retrieve the given named search attributejava.util.Set<Attribute>getSearchAttributes()intgetSize()Returns the current local store sizeStatusgetStatus()Returns the cache status.intgetTerracottaClusteredSize()Returns the current Terracotta clustered store sizebooleanhasAbortedSizeOf()Checks if the cache may contain elements for which the SizeOf engine gave up and only partially calculated the size.booleanisCacheCoherent()Indicates whether this store provides a coherent view of all the elements in a cache.booleanisClusterCoherent()Returns true if the cache is in coherent mode cluster-wide.booleanisNodeCoherent()Returns true if the cache is in coherent mode for the current node.booleanput(Element element)Puts an item into the store.voidputAll(java.util.Collection<Element> elements)Puts a collection of elements into the store.ElementputIfAbsent(Element element)Put an element in the store if no element is currently mapped to the elements key.booleanputWithWriter(Element element, CacheWriterManager writerManager)Puts an item into the store and the cache writer manager in an atomic operationvoidrecalculateSize(java.lang.Object key)Recalculate size of the element mapped to the keyElementremove(java.lang.Object key)Removes an item from the cache.voidremoveAll()Remove all of the elements from the store.voidremoveAll(java.util.Collection<?> keys)Removes a collection of elements from the cache.ElementremoveElement(Element element, ElementValueComparator 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.voidremoveStoreListener(StoreListener listener)Remove listener from store.ElementremoveWithWriter(java.lang.Object key, CacheWriterManager writerManager)Removes an item from the store and the cache writer manager in an atomic operation.Elementreplace(Element element)Replace the cached element only if an Element is currently cached for this keybooleanreplace(Element old, Element element, ElementValueComparator comparator)Replace the cached element only if the value of the current Element is equal to the value of the supplied old Element.voidsetAttributeExtractors(java.util.Map<java.lang.String,AttributeExtractor> extractors)Inform this store of the configured attribute extractors.voidsetInMemoryEvictionPolicy(Policy policy)Sets the eviction policy strategy.voidsetNodeCoherent(boolean coherent)Sets the cache in coherent or incoherent mode for the current node depending on the parameter.voidwaitUntilClusterCoherent()This method waits until the cache is in coherent mode in all the connected nodes.
-
-
-
Field Detail
-
CLUSTER_COHERENT
static final java.lang.String CLUSTER_COHERENT
clusterCoherent property- See Also:
- Constant Field Values
-
NODE_COHERENT
static final java.lang.String NODE_COHERENT
nodeCoherent property- See Also:
- Constant Field Values
-
-
Method Detail
-
addStoreListener
void addStoreListener(StoreListener listener)
Add a listener to the store.- Parameters:
listener-
-
removeStoreListener
void removeStoreListener(StoreListener listener)
Remove listener from store.- Parameters:
listener-
-
put
boolean put(Element element) throws CacheException
Puts an item into the store.- Returns:
- true if this is a new put for the key or element is null. Returns false if it was an update.
- Throws:
CacheException
-
putAll
void putAll(java.util.Collection<Element> elements) throws CacheException
Puts a collection of elements into the store.- Parameters:
elements- Collection of elements to be put in the store- Throws:
CacheException
-
putWithWriter
boolean putWithWriter(Element element, CacheWriterManager writerManager) throws CacheException
Puts an item into the store and the cache writer manager in an atomic operation- Returns:
- true if this is a new put for the key or element is null. Returns false if it was an update.
- Throws:
CacheException
-
get
Element get(java.lang.Object key)
Gets an item from the cache.
-
getQuiet
Element getQuiet(java.lang.Object key)
Gets anElementfrom the Store, without updating statistics- Returns:
- The element
-
getKeys
java.util.List getKeys()
Gets an Array of the keys for all elements in the disk store.- Returns:
- An List of
Serializablekeys
-
remove
Element remove(java.lang.Object key)
Removes an item from the cache.- Since:
- signature changed in 1.2 from boolean to Element to support notifications
-
removeAll
void removeAll(java.util.Collection<?> keys)
Removes a collection of elements from the cache.
-
removeWithWriter
Element removeWithWriter(java.lang.Object key, CacheWriterManager writerManager) throws CacheException
Removes an item from the store and the cache writer manager in an atomic operation.- Throws:
CacheException
-
removeAll
void removeAll() throws CacheExceptionRemove all of the elements from the store.If there are registered
CacheEventListeners they are notified of the expiry or removal of theElementas each is removed.- Throws:
CacheException
-
putIfAbsent
Element putIfAbsent(Element element) throws java.lang.NullPointerException
Put an element in the store if no element is currently mapped to the elements key.- Parameters:
element- element to be added- Returns:
- the element previously cached for this key, or null if none.
- Throws:
java.lang.NullPointerException- if the element is null, or has a null key
-
removeElement
Element removeElement(Element element, ElementValueComparator comparator) throws java.lang.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 to be removedcomparator- ElementValueComparator to use to compare elements- Returns:
- the Element removed or null if no Element was removed
- Throws:
java.lang.NullPointerException- if the element is null, or has a null key
-
replace
boolean replace(Element old, Element element, ElementValueComparator comparator) throws java.lang.NullPointerException, java.lang.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 to be test againstelement- Element to be cachedcomparator- ElementValueComparator to use to compare elements- Returns:
- true is the Element was replaced
- Throws:
java.lang.NullPointerException- if the either Element is null or has a null keyjava.lang.IllegalArgumentException- if the two Element keys are non-null but not equal
-
replace
Element replace(Element element) throws java.lang.NullPointerException
Replace the cached element only if an Element is currently cached for this key- Parameters:
element- Element to be cached- Returns:
- the Element previously cached for this key, or null if no Element was cached
- Throws:
java.lang.NullPointerException- if the Element is null or has a null key
-
dispose
void dispose()
Prepares for shutdown.
-
getSize
int getSize()
Returns the current local store size- Returns:
- the count of the Elements in the Store on the local machine
-
getInMemorySize
int getInMemorySize()
Returns the current local in-memory store size- Returns:
- the count of the Elements in the Store and in-memory on the local machine
-
getOffHeapSize
int getOffHeapSize()
Returns the current local off-heap store size- Returns:
- the count of the Elements in the Store and off-heap on the local machine
-
getOnDiskSize
int getOnDiskSize()
Returns the current local on-disk store size- Returns:
- the count of the Elements in the Store and on-disk on the local machine
-
getTerracottaClusteredSize
int getTerracottaClusteredSize()
Returns the current Terracotta clustered store size- Returns:
- the count of the Elements in the Store across the cluster
-
getInMemorySizeInBytes
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:
- the approximate in-memory size of the store in bytes
-
getOffHeapSizeInBytes
long getOffHeapSizeInBytes()
Gets the size of the off-heap portion of the store, in bytes.- Returns:
- the approximate off-heap size of the store in bytes
-
getOnDiskSizeInBytes
long getOnDiskSizeInBytes()
Gets the size of the on-disk portion of the store, in bytes.- Returns:
- the on-disk size of the store in bytes
-
hasAbortedSizeOf
boolean hasAbortedSizeOf()
Checks if the cache may contain elements for which the SizeOf engine gave up and only partially calculated the size.- Returns:
- true if at least one partially sized element may be in the cache
-
getStatus
Status getStatus()
Returns the cache status.
-
containsKey
boolean containsKey(java.lang.Object key)
A check to see if a key is in the Store.- Parameters:
key- The Element key- Returns:
- true if found. No check is made to see if the Element is expired. 1.2
-
containsKeyOnDisk
boolean containsKeyOnDisk(java.lang.Object key)
A check to see if a key is in the Store and is currently held on disk.- Parameters:
key- The Element key- Returns:
- true if found. No check is made to see if the Element is expired.
-
containsKeyOffHeap
boolean containsKeyOffHeap(java.lang.Object key)
A check to see if a key is in the Store and is currently held off-heap.- Parameters:
key- The Element key- Returns:
- true if found. No check is made to see if the Element is expired.
-
containsKeyInMemory
boolean containsKeyInMemory(java.lang.Object key)
A check to see if a key is in the Store and is currently held in memory.- Parameters:
key- The Element key- Returns:
- true if found. No check is made to see if the Element is expired.
-
expireElements
void expireElements()
Expire all elements.
-
flush
void flush() throws java.io.IOExceptionFlush elements to persistent store.- Throws:
java.io.IOException- if any IO error occurs
-
bufferFull
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:
- true if the store write buffer is backed up.
-
getInMemoryEvictionPolicy
Policy getInMemoryEvictionPolicy()
- Returns:
- the current eviction policy. This may not be the configured policy, if it has been dynamically set.
- See Also:
setInMemoryEvictionPolicy(Policy)
-
setInMemoryEvictionPolicy
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- the new policy
-
getInternalContext
java.lang.Object getInternalContext()
This should not be used, and will generally return null- Returns:
- some internal context (probably null)
-
isCacheCoherent
boolean isCacheCoherent()
Indicates whether this store provides a coherent view of all the elements in a cache. Note that this is same as callingisClusterCoherent()(introduced since 2.0) UseisNodeCoherent()to find out if the cache is coherent in the current node in the cluster- Returns:
trueif the store is coherent; orfalseif the store potentially splits the cache storage with another store or isn't internally coherent- Since:
- 1.7
-
isClusterCoherent
boolean isClusterCoherent() throws TerracottaNotRunningExceptionReturns true if the cache is in coherent mode cluster-wide. Returns false otherwise.It applies to coherent clustering mechanisms only e.g. Terracotta
- Returns:
- true if the cache is in coherent mode cluster-wide, false otherwise
- Throws:
TerracottaNotRunningException- Since:
- 2.0
-
isNodeCoherent
boolean isNodeCoherent() throws TerracottaNotRunningExceptionReturns 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:
- true if the cache is in coherent mode cluster-wide, false otherwise
- Throws:
TerracottaNotRunningException- Since:
- 2.0
-
setNodeCoherent
void setNodeCoherent(boolean coherent) throws java.lang.UnsupportedOperationException, TerracottaNotRunningExceptionSets the cache in coherent or incoherent mode for the current node depending on the parameter. CallingsetNodeCoherent(true)when the cache is already in coherent mode or callingsetNodeCoherent(false)when already in incoherent mode will be a no-op.It applies to coherent clustering mechanisms only e.g. Terracotta
- Parameters:
coherent- true transitions to coherent mode, false to incoherent mode- Throws:
java.lang.UnsupportedOperationException- if this store does not support cache coherence, like RMI replicationTerracottaNotRunningException- Since:
- 2.0
-
waitUntilClusterCoherent
void waitUntilClusterCoherent() throws java.lang.UnsupportedOperationException, TerracottaNotRunningException, java.lang.InterruptedExceptionThis method waits until the cache is in coherent mode in all the connected nodes. If the cache is already in coherent mode it returns immediatelyIt applies to coherent clustering mechanisms only e.g. Terracotta
- Throws:
java.lang.UnsupportedOperationException- if this store does not support cache coherence, like RMI replicationjava.lang.InterruptedExceptionTerracottaNotRunningException- Since:
- 2.0
-
getMBean
java.lang.Object getMBean()
Optional implementation specific MBean exposed by the store.- Returns:
- implementation specific management bean
-
setAttributeExtractors
void setAttributeExtractors(java.util.Map<java.lang.String,AttributeExtractor> extractors)
Inform this store of the configured attribute extractors. Stores that will not invoke extractors are free to ignore this call- Parameters:
extractors-
-
executeQuery
Results executeQuery(StoreQuery query) throws SearchException
Execute the given query on this store- Parameters:
query- query to execute- Returns:
- query results
- Throws:
SearchException
-
getSearchAttributes
java.util.Set<Attribute> getSearchAttributes()
- Returns:
- all search attributes known to this store at the time of invoking the method
-
getSearchAttribute
<T> Attribute<T> getSearchAttribute(java.lang.String attributeName)
Retrieve the given named search attribute- Type Parameters:
T- type of the attribute- Parameters:
attributeName- the name of the attribute to retrieve- Returns:
- the search attribute or null if non-existent
-
getAllQuiet
java.util.Map<java.lang.Object,Element> getAllQuiet(java.util.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- a collection of keys to look for- Returns:
- a map of keys and their corresponding values
-
getAll
java.util.Map<java.lang.Object,Element> getAll(java.util.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- a collection of keys to look for- Returns:
- a map of keys and their corresponding values
-
recalculateSize
void recalculateSize(java.lang.Object key)
Recalculate size of the element mapped to the key- Parameters:
key- the key
-
-