Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ [Feat]: 조회수 누적 및 반영 로직 구현 #36

Merged
merged 3 commits into from
Jan 23, 2024

Conversation

eomgerm
Copy link
Collaborator

@eomgerm eomgerm commented Jan 22, 2024

📍 PR 타입 (하나 이상 선택)

  • 기능 추가
  • 버그 수정
  • 의존성, 환경 변수, 빌드 관련 코드 업데이트
  • 기타 사소한 수정

❗️ 관련 이슈 링크

Close #32

📌 개요

  • RedisTemplate
  • 조회수 증가 로직
  • 조회수 반영 로직

🔁 변경 사항

RedisTemplate

87b4eb1
RedisRepository를 이용하면 동시성 제어가 안돼서 RedisTemplate을 이용했습니다!

조회수 증가 로직

723ae52

  1. 사용자가 레크레이션 조회한다. (레크레이션 상세 API를 호출한다)
  2. Redis에 해당 레크레이션의 id를 가진 key가 있는지 확인한다.
    • 없다면 유효 기간을 30분으로 설정해서 새로 저장한다.
    • 있다면 해당 key의 조회수를 1 증가시킨다.

조회수 반영 로직

723ae52

  1. 매 30분마다 Scheduler와 Batch를 통해 누적된 조회수가 DB에 반영된다.
    • Redis에 저장된 recreationId를 모두 가져온다.
    • 실제로 업데이트 되는 레크레이션은 DB에 존재해야 한다. (레크레이션이 삭제된 경우까지 고려)
    • Redis에 누적된 조회수를 DB에 반영한다.
  2. Redis에 저장된 값들은 30분이 지나면 사라진다!
    📣 Batch 때문에 DB에 테이블들이 추가되는데 정상적인 테이블들이니 그냥 냅두시면 됩니다!

📸 스크린샷

성능 비교

  1. DB에 바로 조회수 1씩 증가
    스크린샷 2024-01-22 20 18 28
    Throughput: 1342.3/sec

  2. Redis에 조회수 누적
    스크린샷 2024-01-22 20 17 49
    Throughput: 1629.5/sec

약 20% 성능 향상

👀 기타 더 이야기해볼 점

아직 조회수 중복 방지는 추가하지 않았는데...
어떤 방식이 좋을지 고민하고 있습니다.
현재로서는 쿠키가 가장 나아보이는 것 같기도 하고.. 흠...
로그인 여부에 따라서도 바뀌어야 할 것 같기도 하고...
일단 중복 방지 기능은 차차 구현해보겠습니다.

✅ 체크 리스트

  • PR 템플릿에 맞추어 작성했어요.
  • 변경 내용에 대한 테스트를 진행했어요.
  • 프로그램이 정상적으로 동작해요.
  • PR에 적절한 라벨을 선택했어요.
  • 불필요한 코드는 삭제했어요.

@eomgerm eomgerm added ✨ feature New feature or request ♻️ refactor code refactoring labels Jan 22, 2024
@eomgerm eomgerm self-assigned this Jan 22, 2024
@eomgerm eomgerm changed the title Issue/32 recreation views ✨ [Feat]: 조회수 누적 및 반영 로직 구현 Jan 22, 2024
Copy link
Contributor

@jinuklee777 jinuklee777 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고많으셨습니다!

Copy link
Collaborator

@catturtle123 catturtle123 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!

@eomgerm eomgerm merged commit 98b6f7d into master Jan 23, 2024
@eomgerm eomgerm deleted the issue/32-recreation-views branch January 23, 2024 17:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
♻️ refactor code refactoring ✨ feature New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

✨ [Feat]: 레크레이션 상세 조회 조회수 추가 로직 구현
3 participants