|
4 | 4 | import com.back.web7_9_codecrete_be.domain.concerts.dto.concert.ConcertItem; |
5 | 5 | import com.back.web7_9_codecrete_be.domain.concerts.dto.concert.ListSort; |
6 | 6 | import com.back.web7_9_codecrete_be.domain.users.entity.User; |
| 7 | +import com.fasterxml.jackson.databind.ObjectMapper; |
7 | 8 | import lombok.RequiredArgsConstructor; |
8 | 9 | import lombok.extern.slf4j.Slf4j; |
9 | 10 | import org.springframework.data.domain.Pageable; |
|
20 | 21 | public class ConcertRedisRepository { |
21 | 22 | private final RedisTemplate<String, String> redisTemplate; |
22 | 23 | private final RedisTemplate<String, Object> objectRedisTemplate; |
| 24 | + private final ObjectMapper objectMapper; |
23 | 25 |
|
24 | 26 | private static final String LOCK_FLAG_PREFIX = "initLoad:"; |
25 | 27 |
|
@@ -88,10 +90,12 @@ public ConcertDetailResponse getCachedConcertDetail(Long concertId) { |
88 | 90 | return concertDetailResponse; |
89 | 91 | } |
90 | 92 |
|
| 93 | + // 공연 상세 정보를 Redis에서 가져오기 |
91 | 94 | private ConcertDetailResponse getConcertDetailResponse(long concertId) { |
92 | | - ConcertDetailResponse concertDetailResponse = (ConcertDetailResponse) objectRedisTemplate.opsForValue().get(CONCERT_DETAIL_PREFIX + concertId); |
93 | | - if (concertDetailResponse == null) return null; |
94 | | - return concertDetailResponse; |
| 95 | + Object rawObject = objectRedisTemplate.opsForValue().get(CONCERT_DETAIL_PREFIX + concertId); |
| 96 | + if (rawObject == null) return null; // null이라면 null 반환 |
| 97 | + if(rawObject instanceof ConcertDetailResponse) return (ConcertDetailResponse) rawObject; // ConcertDetailResponse라면 다운캐스팅 |
| 98 | + return objectMapper.convertValue(rawObject, ConcertDetailResponse.class); // 아니라면 매퍼 사용 클래스 변환 |
95 | 99 | } |
96 | 100 |
|
97 | 101 | // 공연 상세 삭제 |
|
0 commit comments