Spring 2.0以上redisとcacheを統合した後に@Cacheableを使用すると時間が失効します
3269 ワード
@Cacheable注記では、構成の有効期限はサポートされていません.CacheMannegを構成することによってデフォルトの有効期限を設定し、クラスまたはメソッドごとにキャッシュの有効期限を設定する必要がある場合は、すべての必要があります.
解決 次の構成情報を用いて解決できる設定失効時間問題構成情報
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
return new RedisCacheManager(
RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),
this.getRedisCacheConfigurationWithTtl(30*60), // , key
this.getRedisCacheConfigurationMap() // key
);
}
private Map getRedisCacheConfigurationMap() {
Map redisCacheConfigurationMap = new HashMap<>();
//SsoCache BasicDataCache
redisCacheConfigurationMap.put("SsoCache", this.getRedisCacheConfigurationWithTtl(24*60*60));
redisCacheConfigurationMap.put("BasicDataCache", this.getRedisCacheConfigurationWithTtl(30*60));
return redisCacheConfigurationMap;
}
private RedisCacheConfiguration getRedisCacheConfigurationWithTtl(Integer seconds) {
Jackson2JsonRedisSerializer
使用方法
@CacheConfig(cacheNames = "SsoCache")
public class SsoCache{
@Cacheable(keyGenerator = "wiselyKeyGenerator")
public String getTokenByGsid(String gsid)
}
//どちらかを選択すると、valueの情報を使用してクラスのcacheNamesの情報を置き換えることができます.
@Cacheable(value = "BasicDataCache",keyGenerator = "wiselyKeyGenerator")
public String getTokenByGsid(String gsid)