7

Spring Data Cache 抽象化を AWS Elasticache Redis と共に使用するプロジェクトに取り組んでおり、キャッシュ上のオブジェクトの削除時間を設定する方法を知りたいです。

Elasticache Redis で Spring Data Cache Abstraction を構成する方法に関する公式ドキュメントはあまりありません。ここでいくつかの良い情報を見つけました: http://blog.joshuawhite.com/java/caching-with-spring-data-redis/

ただし、キャッシュされたオブジェクトのエビクション時間または存続時間の構成については何もありません。何か助けはありますか?

4

2 に答える 2

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 秒後に削除されるように構成されます。

于 2014-02-11T16:49:24.963 に答える
2

受け入れられた回答に加えて、Java config を介してキャッシュを構成することもできます。このSpring Cloud サンプルは役に立ちました。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" />

于 2015-09-26T15:07:22.037 に答える