1. Redis 설정
- 이전 Redis 설정 글 참조.
https://redeyesboy.tistory.com/17
[SpringBoot] Redis 설정 ( RedisTemplate 사용 )
1. 의존성 추가 org.springframework.boot spring-boot-starter-data-redis 2. Redis 관련 설정 추가- application.propertiesspring.data.redis.host=127.0.0.1spring.data.redis.port=6379spring.data.redis.password=비밀번호 3. Spring Boot 설정 파
redeyesboy.tistory.com
2. Spring Boot 설정 추가
@EnableCaching
@Configuration
public class RedisConfig {
@Value(value = "${spring.data.redis.host}")
private String host;
@Value(value = "${spring.data.redis.port}")
private String port;
@Value(value = "${spring.data.redis.password}")
private String password;
@Bean
RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName(host);
redisStandaloneConfiguration.setPort(Integer.valueOf(port));
redisStandaloneConfiguration.setPassword(password);
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
return lettuceConnectionFactory;
}
@Bean
RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
@Bean
CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()))
.entryTtl(Duration.ofHours(1));
return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(redisConnectionFactory).cacheDefaults(redisCacheConfiguration).build();
}
}
4. 사용예시
@Slf4j
@Service
@RequiredArgsConstructor
public class CodeUtilsService {
private final CodeUtilsDao codeUtilsDao;
@Cacheable(cacheNames = Constants.CACHE_NAME_COMMON_CODE, key = "#reqDto.getCacheKey()", cacheManager = Constants.DEFAULT_CACHE_MANAGER)
public List<CommonCodeDto> selectCommonCodeList(CommonCodeDto reqDto) {
return codeUtilsDao.selectCommonCodeList(reqDto);
}
@Cacheable(cacheNames = Constants.CACHE_NAME_COMMON_CODE, key = "#reqDto.getCacheKey()", cacheManager = Constants.DEFAULT_CACHE_MANAGER)
public CommonCodeDto selectCommonCode(CommonCodeDto reqDto) {
return codeUtilsDao.selectCommonCode(reqDto);
}
@CacheEvict(cacheNames = Constants.CACHE_NAME_COMMON_CODE, key = "#reqDto.getCacheKey()", cacheManager = Constants.DEFAULT_CACHE_MANAGER)
public void deleteCommonCodeCache(CommonCodeDto reqDto) {
log.info("DELETE CACHE KEY :: {}::{}", Constants.CACHE_NAME_COMMON_CODE, reqDto.getCacheKey());
}
}
'[Java] > [Spring]' 카테고리의 다른 글
[SpringBoot] Redis 설정 ( RedisTemplate 사용 ) (0) | 2024.09.12 |
---|---|
[SpringBoot] Database Logging 설정 (0) | 2024.08.27 |
[SpringBoot] Logback 설정 (0) | 2024.08.27 |
[SpringBoot] Jasypt 설정( 프로퍼티 암호화 ) (0) | 2024.08.26 |
[SpringBoot] Thymeleaf 설정 (0) | 2024.08.26 |