[Redis] HyperLogLog

HyperLogLog

HyperLogLog는 2007년에 발표된 알고리즘이며 Loglog Counting 알고리즘을 발전시켜 개발하였기 때문에 Hyper 접두사를 붙혔다. hyperloglog는 매우 큰 데이터의 오차가 1% 이하의 근사치를 구할 때 사용한다. 메모리를 적게 사용하고 오차가 적은것이 특징이다.

hyperloglog는 원소 개수와 상관없이 고정으로 12kb만 사용하기 때문에 메모리 사용률이 낮다.

hyperloglog의 오차는 1.04 / SQRT(m)이다. m은 register의 개수로 Redis에서는 16384개를 사용하므로 오차는 0.81%이다.

hyperloglog의 저장 속도는 set에 비해 데이터 1백만개 기준 약 1.6배 빠른 특징이 있다.

hyperloglog의 조회 속도는 O(1)이다.

Command

hyperloglog의 명령은 개발자 Philippe Flajolet를 기리기 위해 PF로 시작한다

  • PFADD [key] [value]
  • PFCOUNT [key]
  • PFMERGE [store key] [key1] [key2]

참조

http://redisgate.kr/download/FlFuGaMe07.pdf
https://d2.naver.com/helloworld/711301

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/18/Redis/hyperloglog/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.