-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: redis를 활용한 조회 성능 최적화 (#480)
* chore: redis 설정 추가 * chore: redis 관련 의존성 추가 * feat(CoLeaderReader): 캐싱을 위한 CoLeaderReader 레이어 구현 * refactor(CoLeaderRepository): CoLeader user 관련 데이터 페치조인 구현 * refactor(ControllerExceptionAdvice): 서버 에러 트레이스를 위해 트레이스 스택 출력하도록 개선 * chore(ExecutionLoggingAop): redis 관련 세팅 로깅 aop 에서 제외 * chore(UserActivityVO): redis에 저장되어 있는 객체 역직렬화 하기 위한 코드 수정 * chore(ImageUrlVO): redis에 저장되어 있는 객체 역직렬화 하기 위한 코드 수정 * chore(Meeting): 1. mStartDate, mEndDate 역직렬화 문제를 위해 getter 선언 2. 기존에 사용되었던 getter 수정 * chore(BaseTimeEntity): LocalDateTime 직렬화 및 역직렬화 문제로 인해 코드 추가 * chore(Meeting): LocalDateTime 직렬화 및 역직렬화 문제로 인해 코드 추가 * feat(UserReader): 캐싱을 위한 UserReader 레이어 구현 * feat(MeetingReader): 캐싱을 위한 MeetingReader 레이어 구현 * chore: LazyLoading 객체 저장 오류 해결 * add(RedisConfig): redis 관련 설정 추가 1. 직렬화, 역직렬화 관련된 설정 추가 2. 캐시 TTL 5시간 설정 * refactor(MeetingV2ServiceImpl): 캐시를 활용환 성능 최적회 1. 모임 조회 : 모임, 모임장, 공동모임장 관련 데이터 캐싱 2. 모임 수정 : 1번에서 캐싱한 데이터 초기화 * test(yml): redis 설정 추가 * chore(User, Meeting): lazyLoading 객체 redis에 저장하지 않도록 구현 * chore(RedisConfig): host와 port 명시적으로 설정 * feat(AbstractContainerBaseTest): redis 테스트 컨테이너 추가 * fix(AbstractContainerBaseTest): Property 수정 * chore(yml): dev redis 경로 변경 * chore(cd-dev): 배포 테스트 * chore(cd-dev): 배포 테스트 * chore(cd-dev): 배포 테스트 * chore(cd-dev): 배포 테스트 * chore(UserReader): 레디스에 캐싱하는 데이터를 User 에서 MeetingCreatorDto 로 변경 * rename(redisContainerBaseTest): redisContainerBaseTest 으로 파일 이름 변경 * chore(redisContainerBaseTest): 싱글톤으로 수정 * chore: redis 추가 * chore: redis localhost로 변경 * chore: readonly 옵션 추가 * del(User): 주석삭제 * chore(UserReader): readonly 옵션 추가 * chore(RedisConfig): 디폴트 ttl 설정, 이후에 다른 ttl 주기의 캐시가 필요하면 추가할 수 있도록 구현 * chore(ImageUrlVO): 필드 final 로 변경 및 직렬화 설정 * chore(Meeting): 기존 상태로 원상복구 * feat(MeetingReader): Meeting 반환이 아닌 MeetingRedisDto 를 사용으로 수정 * 🚨feat(CoLeaderReader): CoLeaders 가 아닌 CoLeadersRedisDto 반환으로 수정 1. User 생성자에 불가피하게 id 추가 2. CoLeader 에 Meeting 필드를 불가피하게 null 로 저장 * chore(RedisConfig): objectMapper 커스텀화하여 공통적으로 사용할 수 있게 구현 * chore(MeetingV2ServiceImpl): 로직 변경으로 인한 수정 * chore(MeetingV2GetMeetingByIdResponseDto): Meeting 생성자 변경없이 하기 위해 모임 id 반환 방식을 변경 * chore: redis 커넥션 풀 설정 * chore: redis 관련 기능들만 커스텀 objectMapper 사용하도록 수정 * chore(UserActivityVO): UserActivityVO final 추가 * chore(RedisProperties): RedisProperties 를 따로 정의하여 사용 * fix: 잘못된 코드 원상복구 * chore(CoLeaderReader): readonly 추가 * chore(ImageUrlVO): static -> 인스턴스 메서드로 수정 * chore(cd): cd 트리거 수정 * chore(UserActivityVO): 검증 로직 추가 * chore(CoLeadersRedisDto): 기본 생성자 추가 * fix: 기존 코드 복구 * feat(AuthV2ServiceImpl): 회원 정보 수정된 경우에 캐시 초기화 * feat(User): updateIfChanged 메서드 구현, withUserIdForRedis 메서드 구현 * chore(yml): 커넥션 풀 설정 제거 * chore(CoLeaderRedisDto): User 생성 로직 수정 * chore(CoLeadersRedisDto): 기본 해시맵 생성으로 변경 * test: 파트 및 기수가 잘못됐을 경우 예외 발생 * fix: NPE 문제 해결 * chore: 검증로직 private 메서드화
- Loading branch information
Showing
39 changed files
with
899 additions
and
242 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
31 changes: 14 additions & 17 deletions
31
main/src/main/java/org/sopt/makers/crew/main/entity/apply/Apply.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
24 changes: 24 additions & 0 deletions
24
main/src/main/java/org/sopt/makers/crew/main/entity/meeting/CoLeaderReader.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package org.sopt.makers.crew.main.entity.meeting; | ||
|
||
import java.util.List; | ||
|
||
import org.sopt.makers.crew.main.meeting.v2.dto.redis.CoLeadersRedisDto; | ||
import org.springframework.cache.annotation.Cacheable; | ||
import org.springframework.stereotype.Repository; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
|
||
@Repository | ||
@RequiredArgsConstructor | ||
@Transactional(readOnly = true) | ||
public class CoLeaderReader { | ||
private final CoLeaderRepository coLeaderRepository; | ||
|
||
@Cacheable(value = "coLeadersCache", key = "#meetingId") | ||
public CoLeadersRedisDto getCoLeaders(Integer meetingId) { | ||
List<CoLeader> coLeaders = coLeaderRepository.findAllByMeetingId(meetingId); | ||
|
||
return new CoLeadersRedisDto(coLeaders); | ||
} | ||
} |
Oops, something went wrong.