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'). RedisCaches 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
Caches 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, setTransactionAwareaddCache, getCacheNamespublic 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 CacheManagergetCache in class AbstractCacheManagerpublic 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 AbstractCacheManagerprotected Collection<? extends Cache> addConfiguredCachesIfNecessary(Collection<? extends Cache> caches)
Collection of Cache from the given caches collection and adds the configured
Caches 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 InitializingBeanafterPropertiesSet in class AbstractCacheManagerAbstractCacheManager.afterPropertiesSet()protected boolean isCacheAlreadyDecorated(Cache cache)