Redis SortedSet을 사용한 인기글 구현
·
Data/Redis
많은 커뮤니티가 인기글 서비스를 제공한다.내가 진행하는 프로젝트에서도 당연히 인기글 서비스를 제공하는데, 인기글 서비스를 구현한 방법을 공유한다. 인기글을 구현하는 방법은 되게 다양하게 구현할 수 있다.이때 우리 서비스에서는 하루 단위로 인기글을 인기글을 초기화 한다는 요구 명세가 존재했다. 또한 프로젝트에서 인기글을 계산하는 방식은 조회수, 좋아요, 스터디 지원이 발생했을 때 해당 이벤트에 따라 가중치를 주는 방식으로 인기글 점수를 업데이트 하도록 하였다. 인기글 점수 업데이트 시점1. 조회 발생(어뷰징 제외 실제 조회)2. 좋아요 발생(+)3. 좋아요 취소(-)4. 스터디 지원(+)5. 스터디 지원 취소(-)6. 글 삭제(인기글 목록에 존재하면 삭제) 이외에도 인기글 갱신 방식은 변경될 수 있기에 추..
Redis + Ip 기반 조회 수 어뷰징 방지
·
Data/Redis
프로젝트를 진행하며 조회 수 어뷰징 방지 기능을 개발한 경험을 공유하고자 한다. 배경현재 내 프로젝트에서는 특정 게시글을 조회할 때 발생하는 조회 수를 사용하여 인기글을 구현하고 있다. 따라서 조회 수 어뷰징은 큰 문제가 될 수 있다. 때문에 조회 수 어뷰징을 막기 위한 방법을 고민했고 그 결과 IP를 Redis에 특정 시간 동안 저장해두고, 해당 시간 내에 조회 요청이 발생했을 경우 조회수를 업데이트 하지 않는 방식으로 구현했다. 이외에도 많은 조회수 어뷰징 방지 방법이 존재했는데 다음과 같은 이유로 기각하게 되었다.1. 쿠키 : 조회 수 어뷰징 방지 쿠키를 만들고, 이를 통해 검증하는 방식이다. 하지만 이는 어뷰징 방지 하나를 위해 네트워크 전송 시 데이터 크기가 더 커질 수  있으며, 무엇보다 사용..