public final class DiskStore extends AbstractStore implements TierableStore, PoolableStore, StripedReadWriteLockProvider
All new elements are automatically scheduled for writing to disk.
attributeExtractors
CLUSTER_COHERENT, NODE_COHERENT
Modifier and Type | Method and Description |
---|---|
boolean |
bufferFull()
Some store types, such as the disk stores can fill their write buffers if puts
come in too fast.
|
void |
changeDiskCapacity(int newCapacity)
Change the disk capacity, in number of elements
|
boolean |
cleanUpFailedMarker(Serializable key)
Will check whether a Placeholder that failed to flush to disk is lying around
If so, it'll try to evict it
|
boolean |
containsKey(Object key)
A check to see if a key is in the Store.
|
boolean |
containsKeyInMemory(Object key)
A check to see if a key is in the Store and is currently held in memory.
|
boolean |
containsKeyOffHeap(Object key)
A check to see if a key is in the Store and is currently held off-heap.
|
boolean |
containsKeyOnDisk(Object key)
A check to see if a key is in the Store and is currently held on disk.
|
static DiskStore |
create(Cache cache)
Creates a persitent-to-disk store for the given cache, using the given disk path.
|
static DiskStore |
create(Ehcache cache,
Pool onHeapPool,
Pool onDiskPool)
Creates a persitent-to-disk store for the given cache, using the given disk path.
|
StripedReadWriteLock |
createStripedReadWriteLock()
Will create a StripedReadWriteLock always using the same spreading function
|
void |
dispose()
Prepares for shutdown.
|
boolean |
evict(Object key,
DiskStorageFactory.DiskSubstitute substitute)
Remove the matching mapping.
|
Element |
evictElement(Object key,
DiskStorageFactory.DiskSubstitute substitute)
Remove the matching mapping.
|
boolean |
evictFromOnDisk(int count,
long size)
Perform eviction to release on-disk resources
|
boolean |
evictFromOnHeap(int count,
long size)
Perform eviction to release on-heap resources
|
void |
expireElements()
Expire all elements.
|
boolean |
fault(Object key,
net.sf.ehcache.store.disk.DiskStorageFactory.Placeholder expect,
DiskStorageFactory.DiskMarker fault)
Atomically switch (CAS) the
expect representation of this element for the
fault representation. |
void |
fill(Element e)
Add this element to the cache if the key is already present or the add
can succeed without resorting to eviction.
|
void |
flush()
Flush elements to persistent store.
|
Element |
get(Object key)
Gets an item from the cache.
|
long |
getApproximateDiskByteSize()
Return the approximate disk size in bytes
|
long |
getApproximateDiskCountSize()
Return the approximate disk size
|
float |
getApproximateDiskHitRate()
Return the approximate disk hit rate
|
float |
getApproximateDiskMissRate()
Return the approximate disk miss rate
|
long |
getApproximateHeapByteSize()
Return the approximate heap size in bytes
|
long |
getApproximateHeapCountSize()
Return the approximate heap size
|
float |
getApproximateHeapHitRate()
Return the approximate heap hit rate
|
float |
getApproximateHeapMissRate()
Return the approximate heap miss rate
|
File |
getDataFile()
Return a reference to the data file backing this store.
|
File |
getIndexFile()
Return a reference to the index file for this store.
|
Policy |
getInMemoryEvictionPolicy() |
int |
getInMemorySize()
Returns the current local in-memory store size
|
long |
getInMemorySizeInBytes()
Gets the size of the in-memory portion of the store, in bytes.
|
Object |
getInternalContext()
This should not be used, and will generally return null
|
List |
getKeys()
Gets an Array of the keys for all elements in the disk store.
|
Object |
getMBean()
Optional implementation specific MBean exposed by the store.
|
int |
getOffHeapSize()
Returns the current local off-heap store size
|
long |
getOffHeapSizeInBytes()
Gets the size of the off-heap portion of the store, in bytes.
|
int |
getOnDiskSize()
Returns the current local on-disk store size
|
long |
getOnDiskSizeInBytes()
Gets the size of the on-disk portion of the store, in bytes.
|
Set |
getPresentPinnedKeys()
Returns all the keys that are pinned, for which there is a mapping present
|
Element |
getQuiet(Object key)
Gets an
Element from the Store, without updating statistics |
List<DiskStorageFactory.DiskSubstitute> |
getRandomSample(ElementSubstituteFilter factory,
int sampleSize,
Object keyHint)
Select a random sample of elements generated by the supplied factory.
|
int |
getSize()
Returns the current local store size
|
Status |
getStatus()
Returns the cache status.
|
int |
getTerracottaClusteredSize()
Returns the current Terracotta clustered store size
|
boolean |
isPersistent()
Is this store persistent (data survives a JVM restart)
|
boolean |
isPinned(Object key)
Check if the key is pinned
|
boolean |
isTierPinned()
Is this TierableStore pinned ?
|
Set<Object> |
keySet()
Get a set view of the keys in this store
|
boolean |
put(Element element)
Puts an item into the store.
|
Element |
putIfAbsent(Element element)
Put an element in the store if no element is currently mapped to the elements key.
|
boolean |
putRawIfAbsent(Object key,
DiskStorageFactory.DiskMarker encoded)
Put the given encoded element directly into the store
|
boolean |
putWithWriter(Element element,
CacheWriterManager writerManager)
Puts an item into the store and the cache writer manager in an atomic operation
|
Element |
remove(Object key)
Removes an item from the cache.
|
void |
removeAll()
Remove all of the elements from the store.
|
Element |
removeElement(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.
|
boolean |
removeIfNotPinned(Object key)
This method will only remove if the element or the store is not pinned and the key is present in the store
|
void |
removeNoReturn(Object key)
Removes an item from the cache.
|
Element |
removeWithWriter(Object key,
CacheWriterManager writerManager)
Removes an item from the store and the cache writer manager in an atomic operation.
|
Element |
replace(Element element)
Replace the cached element only if an Element is currently cached for this key
|
boolean |
replace(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.
|
void |
setInMemoryEvictionPolicy(Policy policy)
Sets the eviction policy strategy.
|
void |
setPinned(Object key,
boolean pinned)
Mark the key as pinned or not
|
void |
unpinAll()
unpin all pinned keys
|
Object |
unretrievedGet(Object key)
Return the unretrieved (undecoded) value for this key
|
addStoreListener, executeQuery, getAll, getAllQuiet, getEventListenerList, getSearchAttribute, hasAbortedSizeOf, isCacheCoherent, isClusterCoherent, isNodeCoherent, putAll, recalculateSize, removeAll, removeStoreListener, setAttributeExtractors, setNodeCoherent, waitUntilClusterCoherent
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addStoreListener, executeQuery, getAll, getAllQuiet, getSearchAttribute, hasAbortedSizeOf, isCacheCoherent, isClusterCoherent, isNodeCoherent, putAll, recalculateSize, removeAll, removeStoreListener, setAttributeExtractors, setNodeCoherent, waitUntilClusterCoherent
public static DiskStore create(Ehcache cache, Pool onHeapPool, Pool onDiskPool)
cache
- cache that fronts this storeonHeapPool
- pool to track heap usageonDiskPool
- pool to track disk usagepublic static DiskStore create(Cache cache)
cache
- cache that fronts this storepublic boolean isPinned(Object key)
public void setPinned(Object key, boolean pinned)
public boolean cleanUpFailedMarker(Serializable key)
key
- the keypublic StripedReadWriteLock createStripedReadWriteLock()
createStripedReadWriteLock
in interface StripedReadWriteLockProvider
public void changeDiskCapacity(int newCapacity)
newCapacity
- the new max elements on diskpublic boolean bufferFull()
bufferFull
in interface Store
public boolean containsKeyInMemory(Object key)
containsKeyInMemory
in interface Store
key
- The Element keypublic boolean containsKeyOffHeap(Object key)
containsKeyOffHeap
in interface Store
key
- The Element keypublic boolean containsKeyOnDisk(Object key)
containsKeyOnDisk
in interface Store
key
- The Element keypublic void expireElements()
expireElements
in interface Store
public void flush() throws IOException
flush
in interface Store
IOException
- if any IO error occurspublic Policy getInMemoryEvictionPolicy()
getInMemoryEvictionPolicy
in interface Store
Store.setInMemoryEvictionPolicy(Policy)
public int getInMemorySize()
getInMemorySize
in interface Store
public long getInMemorySizeInBytes()
getInMemorySizeInBytes
in interface Store
public int getOffHeapSize()
getOffHeapSize
in interface Store
public long getOffHeapSizeInBytes()
getOffHeapSizeInBytes
in interface Store
public int getOnDiskSize()
getOnDiskSize
in interface Store
public long getOnDiskSizeInBytes()
getOnDiskSizeInBytes
in interface Store
public int getTerracottaClusteredSize()
getTerracottaClusteredSize
in interface Store
public void setInMemoryEvictionPolicy(Policy policy)
setInMemoryEvictionPolicy
in interface Store
policy
- the new policypublic File getDataFile()
public File getIndexFile()
public Object getMBean()
public void fill(Element e)
fill
in interface TierableStore
e
- element to be addedpublic boolean removeIfNotPinned(Object key)
removeIfNotPinned
in interface TierableStore
key
- the key to the elementStore.remove(Object)
public boolean put(Element element)
public boolean putWithWriter(Element element, CacheWriterManager writerManager)
putWithWriter
in interface Store
public Element getQuiet(Object key)
Element
from the Store, without updating statisticspublic Object unretrievedGet(Object key)
key
- key to lookuppublic boolean putRawIfAbsent(Object key, DiskStorageFactory.DiskMarker encoded) throws IllegalArgumentException
key
- the key of the elementencoded
- the encoded elementIllegalArgumentException
- if the supplied key is already presentpublic List getKeys()
getKeys
in interface Store
Serializable
keyspublic Set<Object> keySet()
public void removeNoReturn(Object key)
removeNoReturn
in interface TierableStore
public boolean isTierPinned()
isTierPinned
in interface TierableStore
public Set getPresentPinnedKeys()
getPresentPinnedKeys
in interface TierableStore
public boolean isPersistent()
isPersistent
in interface TierableStore
public Element removeWithWriter(Object key, CacheWriterManager writerManager)
removeWithWriter
in interface Store
public void removeAll()
CacheEventListener
s they are notified of the expiry or removal
of the Element
as each is removed.public int getSize()
public Status getStatus()
public boolean evictFromOnHeap(int count, long size)
evictFromOnHeap
in interface PoolableStore
count
- the number of elements to evictsize
- the size in bytes to free (hint)public boolean evictFromOnDisk(int count, long size)
evictFromOnDisk
in interface PoolableStore
count
- the number of elements to evictsize
- the size in bytes to free (hint)public float getApproximateDiskHitRate()
getApproximateDiskHitRate
in interface PoolableStore
public float getApproximateDiskMissRate()
getApproximateDiskMissRate
in interface PoolableStore
public long getApproximateDiskCountSize()
getApproximateDiskCountSize
in interface PoolableStore
public long getApproximateDiskByteSize()
getApproximateDiskByteSize
in interface PoolableStore
public float getApproximateHeapHitRate()
getApproximateHeapHitRate
in interface PoolableStore
public float getApproximateHeapMissRate()
getApproximateHeapMissRate
in interface PoolableStore
public long getApproximateHeapCountSize()
getApproximateHeapCountSize
in interface PoolableStore
public long getApproximateHeapByteSize()
getApproximateHeapByteSize
in interface PoolableStore
public boolean containsKey(Object key)
containsKey
in interface Store
key
- The Element keypublic Object getInternalContext()
getInternalContext
in interface Store
public Element putIfAbsent(Element element) throws NullPointerException
putIfAbsent
in interface Store
element
- element to be addedNullPointerException
- if the element is null, or has a null keypublic Element removeElement(Element element, ElementValueComparator comparator) throws NullPointerException
removeElement
in interface Store
element
- Element to be removedcomparator
- ElementValueComparator to use to compare elementsNullPointerException
- if the element is null, or has a null keypublic boolean replace(Element old, Element element, ElementValueComparator comparator) throws NullPointerException, IllegalArgumentException
replace
in interface Store
old
- Element to be test againstelement
- Element to be cachedcomparator
- ElementValueComparator to use to compare elementsNullPointerException
- if the either Element is null or has a null keyIllegalArgumentException
- if the two Element keys are non-null but not equalpublic Element replace(Element element) throws NullPointerException
replace
in interface Store
element
- Element to be cachedNullPointerException
- if the Element is null or has a null keypublic boolean fault(Object key, net.sf.ehcache.store.disk.DiskStorageFactory.Placeholder expect, DiskStorageFactory.DiskMarker fault)
expect
representation of this element for the
fault
representation.
A successful switch will return true
, and free the replaced element/element-proxy.
A failed switch will return false
and free the element/element-proxy which was not
installed.
key
- key to which this element (proxy) is mappedexpect
- element (proxy) expectedfault
- element (proxy) to installtrue
if fault
was installedpublic boolean evict(Object key, DiskStorageFactory.DiskSubstitute substitute)
key
- key to match againstsubstitute
- optional value to match againsttrue
on a successful removepublic Element evictElement(Object key, DiskStorageFactory.DiskSubstitute substitute)
key
- key to match againstsubstitute
- optional value to match againstpublic List<DiskStorageFactory.DiskSubstitute> getRandomSample(ElementSubstituteFilter factory, int sampleSize, Object keyHint)
factory
- generator of the given typesampleSize
- minimum number of elements to returnkeyHint
- a key on which we are currently workingCopyright © 2003-2013 Terracotta, Inc.. All Rights Reserved.