Redis ‐ 인기 검색어 구현 - thought-corner/Backend-PlayGround GitHub Wiki

📚 Sorted Set 자료 구조 (ZADD, ZRANGE, ZINCRBY)

스크린샷 2026-02-07 23 29 20
  • Redis에서 Sorted Set(ZSet)은 score(점수)를 기준으로 자동 정렬되는 중복 없는 자료구조이다.
  • 이런 특성 때문에 실제 서비스에서 랭킹 시스템, 실시간 인기 데이터 관리처럼 순서와 가중치가 중요한 경우에 주로 활용된다.

Redis sorted sets

스크린샷 2026-02-07 23 44 56
@Service
@RequiredArgsConstructor
public class SearchService {

    private final SearchRepository searchRepository;
    private final RedisTemplate<String, String> redisTemplate;
    
    public void searchWithRedis(String keyword) {
      // Redis 명령어에서 'ZINCRBY search_keyword_ranking 1 [keyword]'와 동일
      // ZINCRBY 명령어를 사용하여 해당 keyword의 score를 1 증가시킴
      // (만약 해당 키워드가 존재하지 않으면 새로 추가하고 score를 1로 설정함)
      redisTemplate.opsForZSet()
          .incrementScore("search_keyword_ranking", keyword, 1.0);
    }

    public List<String> getTop10KeywordsWithRedis() {
      // Redis 명령어에서 'ZRANGE [key] [start index] [end index] REV'와 동일
      // REV 옵션을 사용하여 Score가 높은 순(내림차순)으로 0~9번 인덱스 데이터를 조회
      Set<String> topKeywords = redisTemplate.opsForZSet()
          .reverseRange("search_keyword_ranking", 0, 9);
      return new ArrayList<>(topKeywords);
    }
}
⚠️ **GitHub.com Fallback** ⚠️