카테고리 없음

Redis HyperLogLog란?

idea9329 2025. 10. 2. 22:08
반응형

Redis의 HyperLogLog(HLL)는 대규모 데이터 집합에서 고유한 원소의 개수(Unique Count, Cardinality) 를 효율적으로 추정하기 위한 확률적 자료구조입니다.


왜 HyperLogLog를 쓰는가?

  1. 메모리 절약
    • 수십억 개의 데이터를 추적해도 약 12KB 메모리만 사용합니다.
    • 일반적으로 모든 데이터를 저장해 중복 제거하는 방식보다 훨씬 효율적입니다.
  2. 빠른 고유 수 계산
    • PFADD, PFCOUNT 명령으로 즉시 결과를 얻을 수 있습니다.
    • 데이터 스트림(로그 수집, 방문자 수 집계 등)에서 유용합니다.
  3. 오차 범위
    • 완벽한 정확도 대신 약 0.81%의 오차율을 허용합니다.
    • 정확도보다 속도와 메모리 절약이 중요한 경우 적합합니다.

동작 원리 (Logs의 의미)

HyperLogLog에서 "logs"라는 말은 로그 파일이 아니라,
데이터를 추정할 때 사용하는 로그 함수(logarithm) 개념을 의미합니다.

  1. 입력 데이터를 해시로 변환
  2. 해시 값의 이진 표현에서 앞부분의 0의 개수(leading zeros) 를 찾음
  3. 이 값을 로그 스케일로 변환하여 분포를 추정
  4. 여러 샘플을 합산하여 전체 고유 원소 개수를 근사치로 계산

즉, "logs"는 수학적으로 로그 기반 추정법을 의미합니다.


Redis HyperLogLog 관련 명령어

  • PFADD key element [element ...] → HyperLogLog에 원소 추가
  • PFCOUNT key [key ...] → 고유 원소 개수 추정
  • PFMERGE destkey sourcekey [sourcekey ...] → 여러 HyperLogLog를 하나로 병합

활용 사례

  • 웹사이트 순 방문자 수(Unique Visitors) 집계
  • 이벤트 스트림에서 고유 ID 개수 추정
  • 광고 노출 집계, 로그 분석, IoT 센서 데이터 중복 제거

👉 정리하면, Redis HyperLogLog logs는 일반적인 로그 파일이 아니라, 로그(logarithm) 기반 수학 원리로 고유 원소 개수를 근사 추정하는 Redis 기능을 뜻합니다.

반응형