tl;dr - 지난 포스트에서 Redis ZSET 기반 일간 실시간 랭킹을 구축했습니다. 주간/월간도 같은 방식으로 하면 될 줄 알았는데, 비선형 스코어(log1p)가 발목을 잡았습니다. ZINCRBY로 7일치를 누적하면 취소 시 역산이 불가능합니다. 결국 Spring Batch로 원본 데이터에서 처음부터 다시 계산하는 배치 집계를 도입했고, Materialized View(MV) 테이블에 TOP 100을 적재하는 구조로 해결했습니다. 1. ZINCRBY로 주간 랭킹을 만들 수 없는 이유이전 포스트에서 작성한 일간 랭킹은 잘 동작하고 있었습니다. product_daily_metrics 테이블에 일간 집계 데이터가 쌓이고, 5분 주기 스케줄러가 이걸 읽어서 Redis ZSET에 반영합니다. 조회는 ZRE..