How to configure eviction (time to live) on Amazon AWS Elasticache Redis + Spring Data

amazon-elasticache, caching, redis, spring

Solution

You can configure eviction time by providing expires map in RedisCacheManager. For example you have cacheable method specified like that:

@Cacheable(value = "customerCache", key = "#id")
public Customer findOne(Integer id) {
    return customerRepository.findOne(id);
}

in your applicationContext.xml it will look like this:

<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager" c:template-ref="redisTemplate" p:usePrefix="true">
    <property name="expires">
        <map>
            <entry key="customerCache" value="350"/>                    
        </map>
    </property>
</bean>

This will configure "customerCache" values to be evicted 350 seconds after these were first added to the cache.

Problem

I'm working on a project where we use Spring Data Cache abstraction along with AWS Elasticache Redis and I would like to know how to configure the eviction time of the objects on the cache. There's not too much official documentation on how to configure Spring Data Cache Abstraction with Elasticache Redis. We found some good info here: http://blog.joshuawhite.com/java/caching-with-spring-data-redis/ But there's nothing about configuring eviction time or time to live of the objects that are cached. Any help?

Original source