728x90
gradle.build
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
RedisCacheConfig
@Configuration
@EnableCaching
public class RedisCacheConfig {
@Bean
public CacheManager cacheManager(RedisConnectionFactory cf) {
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())) // Value Serializer 변경
.entryTtl(Duration.ofMinutes(3L)); // 캐시 수명 30분
return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(cf).cacheDefaults(redisCacheConfiguration).build();
}
}
pageResponse
@JsonIgnoreProperties(ignoreUnknown = true, value = {"pageable"})
public class PageResponse<T> extends PageImpl<T> {
public PageResponse(@JsonProperty("content") List<T> content, @JsonProperty("page") int page,
@JsonProperty("size") int size, @JsonProperty("totalElements") long totalElements) {
super(content, PageRequest.of(page, size), totalElements);
}
public PageResponse(Page<T> page) {
super(page.getContent(), page.getPageable(), page.getTotalElements());
}
public PageResponse(List<T> content, Pageable pageable, long totalElements) {
super(content, pageable, totalElements);
}
}
Service 캐시 적용
@Cacheable(key = "#page", value = "allGoods", condition = "#page == 0", cacheManager = "cacheManager")
public Page<GoodsListResponseDto> allGoods(int page, int size, String sortBy, boolean isAsc) {
...
return new PageResponse<>(goodsResponseList, pageable, goodsPage.getTotalElements());
}
'Springboot' 카테고리의 다른 글
[Springboot] QueryDSL 2 (0) | 2023.08.09 |
---|---|
[Springboot] QueryDSL (0) | 2023.08.08 |
[Springboot] S3에 이미지 올리기 (0) | 2023.08.01 |
[Springboot] UnsatisfiedDependencyException (0) | 2023.08.01 |
[Springboot] OneToMany VS ManyToOne (0) | 2023.07.30 |