Springboot

[SpringBoot] Redis Caching

KJihun 2023. 8. 6. 02:17
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