만료 시간을 설정하고 구성에서 구성하기 위한 Spring Boot 주석 @Cacheable 사용자 정의 파일 세트 키

6976 단어 javarediscachspring

Springboot RedisCacheManager 클래스의 구성은 키의 만료 시간을 지정하고 구성 파일에서 구성합니다.
목적과 효과

RedisCache는 springBoot에서 구성됩니다. @Cacheable 주석을 사용하는 경우 기본값은 redisCache입니다. 구성 파일에서 다른 키의 만료 시간을 설정하면 키 만료 시간을 사용자 지정하는 효과를 얻을 수 있습니다.
계획
1 단계

설정할 키를 저장할 새 Map 클래스를 만듭니다.

@ConfigurationProperties
public class Properties {

 private final Map<String, Duration> initCaches = Maps.newHashMap();

 public Map<String, Duration> getInitCaches() {
 return initCaches;
 }
}


2 단계

redis 구성 클래스에 cacheManager를 작성하고 여기에 맵 세트를 넣습니다.

@Autowired
private Properties properties;

@Bean
public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
    RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig()
            .entryTtl(Duration.ofMinutes(10)).disableCachingNullValues();

    RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory);

    ImmutableSet.Builder<String> cacheNames = ImmutableSet.builder();
    ImmutableMap.Builder<String, RedisCacheConfiguration> cacheConfig = ImmutableMap.builder();
    for (Map.Entry<String, Duration> entry : properties.getInitCaches().entrySet()) {
        cacheNames.add(entry.getKey());
        cacheConfig.put(entry.getKey(), defaultCacheConfig.entryTtl(entry.getValue()));
    }

    return RedisCacheManager.builder(redisCacheWriter)
            .cacheDefaults(defaultCacheConfig)
            .initialCacheNames(cacheNames.build())
            .withInitialCacheConfigurations(cacheConfig.build())
            .build();
}


3단계

Springboot yml 파일에 해당 키의 만료 시간을 설정하여 @Cacheable 값의 만료 시간을 지정할 수 있습니다.

//Fake code
@Cacheable(cacheNames = "fooboo", key = "#xxx", unless = "#result == null")
public void fooboo(String xxx){}


application.yml 파일에 설정

initCaches:
  fooboo: 10m
  fooboo1: 1h


그러면 Redis Cache에 있는 fooboo의 값은 10분 후에 만료되고 fooboo1의 값은 1시간 후에 만료됩니다.

좋은 웹페이지 즐겨찾기