Class RedisTransientStore
- java.lang.Object
-
- org.nuxeo.ecm.core.transientstore.AbstractTransientStore
-
- org.nuxeo.ecm.core.redis.contribs.RedisTransientStore
-
- All Implemented Interfaces:
TransientStore,TransientStoreProvider
public class RedisTransientStore extends AbstractTransientStore
Redis implementation (i.e. cluster aware) of theTransientStore.Since hashes cannot be nested, a storage entry is flattened as follows:
- Entry summary: transientStore:transientStoreName:entryKey { "blobCount": number of blobs associated with the entry "size": storage size of the blobs associated with the entry "completed": entry status } - Entry parameters: transientStore:transientStoreName:entryKey:params { "param1": value1 "param2": value2 } - Entry blobs: transientStore:transientStoreName:entryKey:blobs:0 { "file" "filename" "encoding" "mimetype" "digest" } transientStore:transientStoreName:entryKey:blobs:1 { ... } ...- Since:
- 7.2
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classRedisTransientStore.KeyMatcher
-
Field Summary
Fields Modifier and Type Field Description protected intfirstLevelTTLprotected RedisTransientStore.KeyMatcherkeyMatcherprotected Loglogprotected Stringnamespaceprotected RedisAdminredisAdminprotected RedisExecutorredisExecutorprotected intsecondLevelTTLprotected static StringSIZE_KEYprotected StringsizeKey-
Fields inherited from class org.nuxeo.ecm.core.transientstore.AbstractTransientStore
cacheDir, config
-
-
Constructor Summary
Constructors Constructor Description RedisTransientStore()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected longdecrementStorageSize(long size)protected voiddeleteBlobInfos(String key, String blobCountStr)protected Serializabledeserialize(byte[] bytes)protected Map<String,Serializable>deserialize(Map<byte[],byte[]> byteMap)booleanexists(String key)Returnstrueif an entry exists with the givenkey.List<Blob>getBlobs(String key)Gets the blobs associated with the entry with the givenkey.protected byte[]getBytes(String key)SerializablegetParameter(String key, String parameter)Gets the value ofparameterin the entry with the givenkey.Map<String,Serializable>getParameters(String key)Gets values of the parameters in the entry with the givenkey.longgetSize(String key)Returns the size of the blobs associated with the entry with the givenkeyor-1if entry does not exist.longgetStorageSize()Returns the size (in bytes) of the disk storage used for blobs.protected StringgetString(byte[] bytes)protected Map<String,String>getSummary(String key)longgetTTL(String key)protected longincrementStorageSize(long size)voidinit(TransientStoreConfig config)Initializes the store from the givenconfig.booleanisCompleted(String key)Returnstrueif the entry with the givenkeyis ready.protected Stringjoin(String... fragments)Stream<String>keyStream()Returns aStreamof keys for all entries.protected voidpersistBlobs(String key, long sizeOfBlobs, List<Map<String,String>> blobInfos)Updates the total storage size and the storage size of the entry with the givenkeyaccording tosizeOfBlobsand stores the blob information in this entry.voidputParameter(String key, String parameter, Serializable value)Setsparametertovaluein the entry with the givenkey.voidputParameters(String key, Map<String,Serializable> parameters)Putsparametersin the entry with the givenkey.voidrelease(String key)Informs the store that the entry with the givenkeycan be released if TTL or GC parameters require to do some cleanup.protected voidremoveAllEntries()protected voidremoveEntry(String key)protected byte[]serialize(Serializable value)protected Map<byte[],byte[]>serialize(Map<String,Serializable> map)voidsetCompleted(String key, boolean completed)Marks the entry with the givenkeyas ready.protected voidsetStorageSize(long newSize)Sets the size of the disk storage in bytes.protected voidsetTTL(String key, int seconds)voidshutdown()Shuts down the store.-
Methods inherited from class org.nuxeo.ecm.core.transientstore.AbstractTransientStore
doGC, getCacheDir, getCachingDirectory, getCachingDirName, getFilePathSize, getKeyCachingDirName, getSizeOfBlobs, loadBlobs, putBlobs, remove, removeAll, removeBlobs, storeBlobs
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.nuxeo.ecm.core.transientstore.api.TransientStoreProvider
getStorageSizeMB, keySet
-
-
-
-
Field Detail
-
SIZE_KEY
protected static final String SIZE_KEY
- See Also:
- Constant Field Values
-
redisExecutor
protected RedisExecutor redisExecutor
-
namespace
protected String namespace
-
sizeKey
protected String sizeKey
-
keyMatcher
protected RedisTransientStore.KeyMatcher keyMatcher
-
redisAdmin
protected RedisAdmin redisAdmin
-
firstLevelTTL
protected int firstLevelTTL
-
secondLevelTTL
protected int secondLevelTTL
-
log
protected Log log
-
-
Method Detail
-
init
public void init(TransientStoreConfig config)
Description copied from interface:TransientStoreProviderInitializes the store from the givenconfig.- Specified by:
initin interfaceTransientStoreProvider- Overrides:
initin classAbstractTransientStore
-
shutdown
public void shutdown()
Description copied from interface:TransientStoreProviderShuts down the store.- Specified by:
shutdownin interfaceTransientStoreProvider- Specified by:
shutdownin classAbstractTransientStore
-
exists
public boolean exists(String key)
Description copied from interface:TransientStoreReturnstrueif an entry exists with the givenkey.- Specified by:
existsin interfaceTransientStore- Specified by:
existsin classAbstractTransientStore
-
keyStream
public Stream<String> keyStream()
Description copied from interface:TransientStoreProviderReturns aStreamof keys for all entries.
-
putParameter
public void putParameter(String key, String parameter, Serializable value)
Description copied from interface:TransientStoreSetsparametertovaluein the entry with the givenkey.If entry does not exist a new entry is created. If
parameteralready exists in the entry it is overwritten.- Specified by:
putParameterin interfaceTransientStore- Specified by:
putParameterin classAbstractTransientStore
-
getParameter
public Serializable getParameter(String key, String parameter)
Description copied from interface:TransientStoreGets the value ofparameterin the entry with the givenkey.Returns
nullif entry or parameter does not exist.- Specified by:
getParameterin interfaceTransientStore- Specified by:
getParameterin classAbstractTransientStore
-
putParameters
public void putParameters(String key, Map<String,Serializable> parameters)
Description copied from interface:TransientStorePutsparametersin the entry with the givenkey. Overwrites any existing parameter in the entry.If entry does not exist a new entry is created.
- Specified by:
putParametersin interfaceTransientStore- Specified by:
putParametersin classAbstractTransientStore
-
getParameters
public Map<String,Serializable> getParameters(String key)
Description copied from interface:TransientStoreGets values of the parameters in the entry with the givenkey.Returns
nullif entry does not exist.- Specified by:
getParametersin interfaceTransientStore- Specified by:
getParametersin classAbstractTransientStore
-
getBlobs
public List<Blob> getBlobs(String key)
Description copied from interface:TransientStoreGets the blobs associated with the entry with the givenkey.Returns
nullif entry does not exist.- Specified by:
getBlobsin interfaceTransientStore- Specified by:
getBlobsin classAbstractTransientStore
-
getSize
public long getSize(String key)
Description copied from interface:TransientStoreReturns the size of the blobs associated with the entry with the givenkeyor-1if entry does not exist.- Specified by:
getSizein interfaceTransientStore- Specified by:
getSizein classAbstractTransientStore
-
isCompleted
public boolean isCompleted(String key)
Description copied from interface:TransientStoreReturnstrueif the entry with the givenkeyis ready.- Specified by:
isCompletedin interfaceTransientStore- Specified by:
isCompletedin classAbstractTransientStore
-
setCompleted
public void setCompleted(String key, boolean completed)
Description copied from interface:TransientStoreMarks the entry with the givenkeyas ready.If entry does not exist a new entry is created.
- Specified by:
setCompletedin interfaceTransientStore- Specified by:
setCompletedin classAbstractTransientStore
-
release
public void release(String key)
Description copied from interface:TransientStoreInforms the store that the entry with the givenkeycan be released if TTL or GC parameters require to do some cleanup.Has no effect if entry does not exist.
- Specified by:
releasein interfaceTransientStore- Specified by:
releasein classAbstractTransientStore
-
persistBlobs
protected void persistBlobs(String key, long sizeOfBlobs, List<Map<String,String>> blobInfos)
Description copied from class:AbstractTransientStoreUpdates the total storage size and the storage size of the entry with the givenkeyaccording tosizeOfBlobsand stores the blob information in this entry.- Specified by:
persistBlobsin classAbstractTransientStore
-
getStorageSize
public long getStorageSize()
Description copied from interface:TransientStoreProviderReturns the size (in bytes) of the disk storage used for blobs.- Returns:
- the number of bytes used by stored blobs
-
setStorageSize
protected void setStorageSize(long newSize)
Description copied from class:AbstractTransientStoreSets the size of the disk storage in bytes.- Specified by:
setStorageSizein classAbstractTransientStore
-
incrementStorageSize
protected long incrementStorageSize(long size)
- Specified by:
incrementStorageSizein classAbstractTransientStore
-
decrementStorageSize
protected long decrementStorageSize(long size)
- Specified by:
decrementStorageSizein classAbstractTransientStore
-
removeEntry
protected void removeEntry(String key)
- Specified by:
removeEntryin classAbstractTransientStore
-
removeAllEntries
protected void removeAllEntries()
- Specified by:
removeAllEntriesin classAbstractTransientStore
-
getTTL
public long getTTL(String key)
-
getBytes
protected byte[] getBytes(String key)
-
getString
protected String getString(byte[] bytes)
-
serialize
protected byte[] serialize(Serializable value)
-
deserialize
protected Serializable deserialize(byte[] bytes)
-
serialize
protected Map<byte[],byte[]> serialize(Map<String,Serializable> map)
-
deserialize
protected Map<String,Serializable> deserialize(Map<byte[],byte[]> byteMap)
-
setTTL
protected void setTTL(String key, int seconds)
-
-