이번에 팀 프로젝트를 진행하면서 특정 카드를 조회시 조회수가 증가하는 로직을 구현하였다.



ticket을 조회하는 메서드 ticketViewHistory entity를 새로 만들어서 해당 카드를 본 유저 + 티켓 + 본날짜를 기록으로 남기도록 짰다.
그리고 한번더 조회할 시 해당 기록을 토대로 이미 오늘 조회한 이력이 있는 유저면 조회수가 증가하지 않게 로직을 짰다.

같은 유저로 티켓 조회를 여러번 눌러도 뷰수가 더이상 올라가지 않는 것을 확인했다.
ticket_view_history가 db에 남은 모습

ticket 테이블에 뷰수가 남는 모습

그리고 일일 조회수를 목적으로 만들었기 때문에 자정이 지나면 지워 지도록 스케줄러를 이용해 메서드를 만들었다.

정상 작동이 되는것을 확인한 후 조회수를 DB에서 관리하는게 아니라 redis를 사용해볼겸 redis에다 저장하고 12시에 삭제 되는 방식을 고안해봤다.
레디스를 이용해서 조회수를 저장하고 불러오는 메서드를 만들었다.


레디스에 있는 데이터는 자정마다 지워지도록 스케줄러를 사용하였고, 총 조회수를 기록하기 위해 삭제전 레디스에 있는 데이터를 DB에 넣어주는 작업을 진행하도록 만들었다.


레디스인사이트를 통해서 데이터가 잘 들어갔는지 확인이 가능하다
스케줄러가 정상 작동하는지 알아보기 위해 원래는 자정이지만 2분마다 작동하도록 설정

다 비워진것을 확인했다.
'java 배우기 > TIL' 카테고리의 다른 글
| REST API 네이밍 원칙 (1) | 2024.10.23 |
|---|---|
| List를 Page 화 하기 (0) | 2024.10.22 |
| 여러 역할이 부여된 유저찾기 오류 (0) | 2024.10.16 |
| docker로 redis 실행중 생긴 오류 (0) | 2024.10.15 |
| 깃허브 PR 규칙 에러 (branch 적용 범위 실수) (0) | 2024.10.14 |