Redis HyperLog로그
Redis는 버전 2.8.9에서 HyperLogLog 구조를 추가했습니다.
Redis HyperLogLog는 카디널리티 통계에 사용되는 알고리즘입니다. HyperLogLog의 장점은 입력 요소의 수나 양이 매우 클 때 카디널리티를 계산하는 데 필요한 공간이 항상 고정되어 있다는 것입니다. , 그리고 매우 작습니다.
Redis에서 각 HyperLogLog 키는 거의 2^64개의 서로 다른 요소의 기초를 계산하는 데 12KB의 메모리만 필요합니다. 숫자. 이는 카디널리티를 계산할 때 더 많은 메모리를 소비하는 컬렉션과 뚜렷한 대조를 이룹니다. 요소가 많을수록 더 많은 메모리가 소비됩니다.
그러나 HyperLogLog는 입력 요소를 기준으로만 베이스를 계산하고 입력 요소 자체를 저장하지 않기 때문에 HyperLogLog는 컬렉션과 같은 입력의 개별 요소를 반환할 수 없습니다.
카디널리티란 무엇인가요?
예를 들어 데이터 세트가 {1, 3, 5, 7, 5, 7, 8}이면 이 데이터 세트의 카디널리티 세트는 {1, 3, 5,7, 8}, 카디널리티(반복되지 않는 요소)는 5입니다. 카디널리티 추정은 허용 가능한 오류 범위 내에서 카디널리티를 빠르게 계산하는 것입니다.
예
다음 예는 HyperLogLog의 작업 프로세스를 보여줍니다.
redis 127.0.0.1:6379> PFADD w3ckey "redis" 1) (integer) 1 redis 127.0.0.1:6379> PFADD w3ckey "mongodb" 1) (integer) 1 redis 127.0.0.1:6379> PFADD w3ckey "mysql" 1) (integer) 1 redis 127.0.0.1:6379> PFCOUNT w3ckey (integer) 3
Redis HyperLogLog 명령
다음 표에는 redis HyperLogLog의 기본 명령이 나열되어 있습니다.
序号 | 命令及描述 |
---|---|
1 | PFADD key element [element ...] 添加指定元素到 HyperLogLog 中。 |
2 | PFCOUNT key [key ...] 返回给定 HyperLogLog 的基数估算值。 |
3 | PFMERGE destkey sourcekey [sourcekey ...] 将多个 HyperLogLog 合并为一个 HyperLogLog |