Redis Sorted Set으로 랭킹보드 구현
·
Redis
서론랭킹 보드를 구현해야 하는 요구사항이 있을 때, 이를 어떻게 효율적으로 구현할 수 있을까? 가장 단순하게는 데이터베이스에서 집계성 테이블이나 배치 과정을 통해 랭킹 정보를 가져오는 방법이 있을 것이다. 주간 또는 일간 랭킹 정보를 특정한 간격마다 배치 작업을 통해 갱신하는 방식은 비교적 낮은 DB 비용으로 처리할 수 있다.하지만, 실시간으로 변경되는 데이터를 정렬하고자 한다면 어떻게 해야 할까? 수많은 데이터가 쌓인 DB 테이블에서 쿼리를 날려 집계하는 방법이 과연 효율적일까? 다음은 특정 로그나 정보가 담긴 테이블(row size = 40,000)에서 주간 value를 합산하여 랭킹을 가져오는 쿼리의 예시다.explain analyzeSELECT user_id, nickname, SUM((log->..