public class RedisCacheManager extends org.springframework.cache.transaction.AbstractTransactionSupportingCacheManager
CacheManager
implementation for Redis. By default saves the keys directly, without appending a prefix (which
acts as a namespace). To avoid clashes, it is recommended to change this (by setting 'usePrefix' to 'true'). RedisCache
s will be lazily initialized for each getCache(String)
request unless a set of
predefined cache names is provided. AbstractTransactionSupportingCacheManager.setTransactionAware(boolean)
to true
will force Caches to be decorated as
TransactionAwareCacheDecorator
so values will only be written to the cache after successful commit of
surrounding transaction.Constructor and Description |
---|
RedisCacheManager(RedisTemplate template)
Construct a
RedisCacheManager . |
RedisCacheManager(RedisTemplate template,
Collection<String> cacheNames)
Construct a static
RedisCacheManager , managing caches for the specified cache names only. |
Modifier and Type | Method and Description |
---|---|
protected Collection<? extends Cache> |
addConfiguredCachesIfNecessary(Collection<? extends Cache> caches)
Returns a new
Collection of Cache from the given caches collection and adds the configured
Cache s of they are not already present. |
void |
afterPropertiesSet()
The number of caches and their names will be fixed after a call to this method, with no creation of further cache
regions at runtime.
|
protected long |
computeExpiration(String name) |
protected Cache |
createAndAddCache(String cacheName) |
protected RedisCache |
createCache(String cacheName) |
protected Cache |
decorateCache(Cache cache) |
Cache |
getCache(String name) |
protected RedisCachePrefix |
getCachePrefix() |
protected RedisTemplate |
getTemplate() |
protected boolean |
isCacheAlreadyDecorated(Cache cache) |
protected boolean |
isUsePrefix() |
protected List<Cache> |
loadAndInitRemoteCaches() |
protected Collection<? extends Cache> |
loadCaches() |
protected Set<String> |
loadRemoteCacheKeys() |
void |
setCacheNames(Collection<String> cacheNames)
Specify the set of cache names for this CacheManager's 'static' mode.
|
void |
setCachePrefix(RedisCachePrefix cachePrefix)
Sets the cachePrefix.
|
void |
setDefaultExpiration(long defaultExpireTime)
Sets the default expire time (in seconds).
|
void |
setExpires(Map<String,Long> expires)
Sets the expire time (in seconds) for cache regions (by key).
|
void |
setLoadRemoteCachesOnStartup(boolean loadRemoteCachesOnStartup)
If set to
true RedisCacheManager will try to retrieve cache names from redis server using
KEYS command and initialize RedisCache for each of them. |
void |
setUsePrefix(boolean usePrefix) |
isTransactionAware, setTransactionAware
addCache, getCacheNames
public RedisCacheManager(RedisTemplate template)
RedisCacheManager
.template
- public RedisCacheManager(RedisTemplate template, Collection<String> cacheNames)
RedisCacheManager
, managing caches for the specified cache names only.template
- cacheNames
- public Cache getCache(String name)
getCache
in interface CacheManager
getCache
in class AbstractCacheManager
public void setCacheNames(Collection<String> cacheNames)
null
or empty collection argument resets the mode to 'dynamic', allowing for further
creation of caches again.public void setUsePrefix(boolean usePrefix)
public void setCachePrefix(RedisCachePrefix cachePrefix)
cachePrefix
- the cachePrefix to setpublic void setDefaultExpiration(long defaultExpireTime)
defaultExpireTime
- time in seconds.public void setExpires(Map<String,Long> expires)
expires
- time in secondspublic void setLoadRemoteCachesOnStartup(boolean loadRemoteCachesOnStartup)
true
RedisCacheManager
will try to retrieve cache names from redis server using
KEYS command and initialize RedisCache
for each of them.loadRemoteCachesOnStartup
- protected Collection<? extends Cache> loadCaches()
loadCaches
in class AbstractCacheManager
protected Collection<? extends Cache> addConfiguredCachesIfNecessary(Collection<? extends Cache> caches)
Collection
of Cache
from the given caches collection and adds the configured
Cache
s of they are not already present.caches
- must not be nullprotected RedisCache createCache(String cacheName)
protected long computeExpiration(String name)
protected RedisTemplate getTemplate()
protected RedisCachePrefix getCachePrefix()
protected boolean isUsePrefix()
public void afterPropertiesSet()
afterPropertiesSet
in interface InitializingBean
afterPropertiesSet
in class AbstractCacheManager
AbstractCacheManager.afterPropertiesSet()
protected boolean isCacheAlreadyDecorated(Cache cache)