발제 13번 해설

최길중·2026년 4월 7일
  1. 인덱스 적용
    닉네임 검색 성능을 높이기 위해 users.nickname 컬럼에 인덱스를 적용했다.
@Table(
        name = "users",
        indexes = {
                @Index(name = "idx_users_nickname", columnList = "nickname")
        }
)
  1. Redis 캐시 적용
    동일한 닉네임 검색이 반복될 경우 DB를 다시 조회하지 않도록 Redis 캐시를 적용했다.

@Cacheable(cacheNames = "userSearchByNickname", key = "#nickname")
public List<UserResponse> searchUserByNickname(String nickname) {
    return userRepository.findByNickname(nickname)
            .stream()
            .map(user -> new UserResponse(user.getId(), user.getEmail(), user.getNickname()))
            .toList();
}
  1. Service코드 캐시 적용
    기존에는 동일한 nickname 요청이 반복될 때마다 매번 DB를 조회했다.
    이를 개선하기 위해 @Cacheable을 적용하여, 첫 번째 요청 결과를 Redis에 저장하고 이후 동일한 요청은 캐시에서 바로 반환하도록 구성했다.
@Cacheable(cacheNames = "userSearchByNickname", key = "#nickname")
public List<UserResponse> searchUserByNickname(String nickname) {
    return userRepository.findByNickname(nickname)
            .stream()
            .map(user -> new UserResponse(user.getId(), user.getEmail(), user.getNickname()))
            .toList();
}
profile
취준생

0개의 댓글