我正在开发一个项目,我们使用Spring Data Cache抽象和AWS Elasticache Redis,我想知道如何配置缓存中对象的逐出时间。
关于如何使用Elasticache Redis配置Spring Data Cache Abstraction的官方文档并不多。我们在这里找到了一些不错的信息:http://blog.joshuawhite.com/java/caching-with-spring-data-redis/
但是没有任何关于配置被驱逐对象的驱逐时间或时间。有什么帮助吗?
答案 0 :(得分:13)
您可以通过在RedisCacheManager中提供过期地图来配置驱逐时间。例如 你有像这样指定的可缓存方法:
@Cacheable(value = "customerCache", key = "#id")
public Customer findOne(Integer id) {
return customerRepository.findOne(id);
}
在您的applicationContext.xml中,它将如下所示:
<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>
这会将“customerCache”值配置为在首次添加到缓存后350秒逐出。
答案 1 :(得分:2)
除了接受的答案,您还可以通过Java配置配置缓存。这Spring Cloud Sample对我有帮助。这是改编自该项目中的ReferenceApplication.java
。
在@Configuration
部分,您可以这样说:
@Configuration
@EnableElastiCache({@CacheClusterConfig(name = "customerCache", expiration = 360)})
@Profile("!local")
protected static class ElastiCacheConfiguration {}
使用Spring Profiles还有其他好处。群集将从您的aws-config.xml
中获取。在xml配置中设置区域上下文非常重要,否则您的群集将无法被接收。
<aws-context:context-region region="<your-region-here" />