Skip to content

Commit 5289a86

Browse files
authored
Merge pull request #135 from Wedit-project/feat/#134-redis-캐싱-추가
[feat] redis 캐싱 추가
2 parents c779ad8 + 03b20ef commit 5289a86

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

src/main/java/com/wedit/weditapp/domain/invitation/service/InvitationService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.List;
44
import java.util.stream.Collectors;
55

6+
import org.springframework.cache.annotation.Cacheable;
67
import org.springframework.security.core.userdetails.UserDetails;
78
import org.springframework.stereotype.Service;
89
import org.springframework.web.multipart.MultipartFile;
@@ -112,7 +113,9 @@ public InvitationResponseDto getInvitation(UserDetails userDetails, Long invitat
112113
}
113114

114115
// 청첩장 목록 조회 (생성일 기준 오름차순)
116+
@Cacheable(value = "memberInvitations", key = "#userDetails.username", unless = "#result == null")
115117
public List<InvitationResponseDto> getMemberInvitations(UserDetails userDetails) {
118+
log.info("DB에서 청첩장 목록 조회 실행"); // 캐시가 적용되지 않은 경우에만 로그 출력
116119
Member member = getMember(userDetails);
117120

118121
List<Invitation> invitations = invitationRepository.findByMemberIdOrderByCreatedAtAsc(member.getId());
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.wedit.weditapp.global.config;
2+
3+
import org.springframework.boot.autoconfigure.cache.RedisCacheManagerBuilderCustomizer;
4+
import org.springframework.cache.annotation.EnableCaching;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
import org.springframework.data.redis.cache.RedisCacheConfiguration;
8+
import org.springframework.data.redis.cache.RedisCacheManager;
9+
import org.springframework.data.redis.connection.RedisConnectionFactory;
10+
11+
import java.time.Duration;
12+
13+
@Configuration
14+
@EnableCaching
15+
public class RedisCacheConfig {
16+
17+
@Bean
18+
public RedisCacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory) {
19+
// 기본 캐시 설정: 2주
20+
RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
21+
.entryTtl(Duration.ofSeconds(1209600))
22+
.disableCachingNullValues();
23+
24+
return RedisCacheManager.builder(redisConnectionFactory)
25+
.cacheDefaults(cacheConfiguration)
26+
.build();
27+
}
28+
29+
// 추후 캐시 별 개별 TTL 지정 시 사용 예정
30+
@Bean
31+
public RedisCacheManagerBuilderCustomizer redisCacheManagerBuilderCustomizer() {
32+
return builder -> builder
33+
.withCacheConfiguration("memberInvitations",
34+
RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(1209600)));
35+
}
36+
}

0 commit comments

Comments
 (0)