|
35 | 35 | import com.sluv.infra.ai.AiModelService; |
36 | 36 | import com.sluv.infra.alarm.service.ItemAlarmService; |
37 | 37 | import com.sluv.infra.cache.CacheService; |
| 38 | +import com.sluv.infra.counter.view.ViewCounter; |
38 | 39 | import lombok.RequiredArgsConstructor; |
39 | 40 | import lombok.extern.slf4j.Slf4j; |
40 | 41 | import org.springframework.data.domain.Page; |
@@ -73,16 +74,19 @@ public class ItemService { |
73 | 74 | private final ItemScrapDomainService itemScrapDomainService; |
74 | 75 |
|
75 | 76 | private final AiModelService aiModelService; |
76 | | - private final CacheService cacheService; |
| 77 | + private final CacheService<ItemDetailFixData> cacheService; |
| 78 | + private final ViewCounter viewCounter; |
77 | 79 | private final ItemAlarmService itemAlarmService; |
78 | 80 | private final ItemHelper itemHelper; |
79 | 81 |
|
| 82 | + private final String ITEM_KEY_PREFIX = "item:"; |
| 83 | + |
80 | 84 | @Transactional |
81 | 85 | public ItemPostResDto postItem(Long userId, ItemPostReqDto reqDto) { |
82 | 86 | User user = userDomainService.findById(userId); |
83 | 87 |
|
84 | 88 | if (reqDto.getId() != null) { |
85 | | - cacheService.deleteItemDetailFixDataByItemId(reqDto.getId()); |
| 89 | + cacheService.deleteByKey(ITEM_KEY_PREFIX + reqDto.getId()); |
86 | 90 | } |
87 | 91 |
|
88 | 92 | // 추가될 Celeb 확인 |
@@ -184,10 +188,10 @@ public ItemDetailResDto getItemDetail(Long userId, Long itemId) { |
184 | 188 | } |
185 | 189 |
|
186 | 190 | // 2. Item Detail 고정 데이터 조회 -> Cache Aside |
187 | | - ItemDetailFixData fixData = (ItemDetailFixData) cacheService.findItemDetailFixDataByItemId(itemId); |
| 191 | + ItemDetailFixData fixData = cacheService.findByKey(ITEM_KEY_PREFIX + itemId); |
188 | 192 | if (fixData == null) { |
189 | 193 | fixData = getItemDetailFixData(item); |
190 | | - cacheService.saveItemDetailFixData(itemId, fixData); |
| 194 | + cacheService.saveWithKey(ITEM_KEY_PREFIX + itemId, fixData); |
191 | 195 | } |
192 | 196 |
|
193 | 197 | // 3. 좋아요 수 |
@@ -243,14 +247,13 @@ public ItemDetailResDto getItemDetail(Long userId, Long itemId) { |
243 | 247 | } |
244 | 248 |
|
245 | 249 | private void increaseViewNum(Long userId, Item item) { |
246 | | - boolean isExist = cacheService.existUserViewItemId(userId, item.getId()); |
| 250 | + boolean isExist = viewCounter.existUserViewItemId(userId, item.getId()); |
247 | 251 | if (!isExist) { |
248 | | - cacheService.saveUserViewItemId(userId, item.getId()); |
| 252 | + viewCounter.saveUserViewItemId(userId, item.getId()); |
249 | 253 | item.increaseViewNum(); |
250 | 254 | } |
251 | 255 | } |
252 | 256 |
|
253 | | - // @Cacheable(cacheNames = "item", key = "#itemId") |
254 | 257 | @Transactional |
255 | 258 | public ItemDetailFixData getItemDetailFixData(Item item) { |
256 | 259 | Long itemId = item.getId(); |
@@ -314,7 +317,7 @@ public void deleteItem(Long itemId) { |
314 | 317 |
|
315 | 318 | item.changeStatus(ItemStatus.DELETED); |
316 | 319 | itemDomainService.saveItem(item); |
317 | | - cacheService.deleteItemDetailFixDataByItemId(itemId); |
| 320 | + cacheService.deleteByKey(ITEM_KEY_PREFIX + itemId); |
318 | 321 | } |
319 | 322 |
|
320 | 323 | @Transactional(readOnly = true) |
|
0 commit comments