earthkingman / 42Swim

42서울 QnA 서비스
14 stars 3 forks source link

랭킹 서비스 구현 #253

Open hainho opened 2 years ago

hainho commented 2 years ago

제목

랭킹 서비스 구현 레디스 사용

이슈에 대한 설명

252

랭킹 서비스는 질문글 리스트를 볼때마다 정보를 가져와야 해서 get을 빠르게 하기 위해서 rdb 가 아닌 redis를 사용하여 구현하였습니다. redis의 sorted set에 userId를 key로 score를 value로 하여 랭킹이 자동 정렬되도록 구현하였습니다. 좋아요를 받거나 글이 채택 될 때마다 점수 정보를 update 해주어야 하는데 이를 redis로 처리하여 rdb보다 매우 빠르게 처리가 가능합니다.

그러나 주목적인 질문글 리스트에서 점수 상위 10명을 보여주기 위해서는 상위 10명의 key를 가지고 와서 rdb 에서 userId로 유저정보를 가져와야합니다. get을 rdb 보다 빠르게 하기 위해 redis를 사용했는데 결국 rdb에서 유저정보를 가져와야 하는 문제로 redis를 사용하는 의미가 없어졌습니다.

이를 해결하기 위해 랭킹에서 필요한 유저 정보인 유저 닉네임과 유저 프로필 사진 링크를 redis에 set으로 저장하기로 하였습니다. 질문글 리스트 페이지 요청시 redis에서 점수 상위 10명의 점수와 아이디를 가져오고 아이디를 이용하여 redis set에서 닉네임과 유저 프로필 사진 링크를 가져오는 방식으로 구현할 예정입니다.

checkList

주의사항

hainho commented 2 years ago

252