Redis HyperLogLog
Redis añadió la estructura HyperLogLog en la versión 2.8.9.
Redis HyperLogLog es un algoritmo utilizado para el conteo de cardinalidad. La ventaja de HyperLogLog es que, cuando el número o el volumen de elementos de entrada es extremadamente grande, el espacio necesario para calcular la cardinalidad es siempre fijo y muy pequeño.
En Redis, cada clave HyperLogLog solo necesita 12 KB de memoria para calcular la cardinalidad de casi 2^64 elementos distintos. Esto contrasta fuertemente con los conjuntos, donde cuantos más elementos haya, más memoria se consume al calcular la cardinalidad.
Sin embargo, dado que HyperLogLog solo calcula la cardinalidad basándose en los elementos de entrada y no almacena los elementos en sí, no puede devolver los elementos de entrada individuales como lo hace un conjunto.
¿Qué es la cardinalidad?
Por ejemplo, el conjunto de datos {1, 3, 5, 7, 5, 7, 8} tiene un conjunto de cardinalidad {1, 3, 5 ,7, 8} y una cardinalidad (elementos no repetidos) de 5. La estimación de cardinalidad consiste en calcular rápidamente la cardinalidad dentro de un rango de error aceptable.
Ejemplo
El siguiente ejemplo demuestra el proceso de trabajo de HyperLogLog:
redis 127.0.0.1:6379> PFADD ejemplokey "redis" 1) (integer) 1 redis 127.0.0.1:6379> PFADD ejemplokey "mongodb" 1) (integer) 1 redis 127.0.0.1:6379> PFADD ejemplokey "mysql" 1) (integer) 1 redis 127.0.0.1:6379> PFCOUNT ejemplokey (integer) 3
Comandos de Redis HyperLogLog
La siguiente tabla enumera los comandos básicos de Redis HyperLogLog:
| N.º | Comando y descripción |
|---|---|
| 1 | PFADD key element [element ...] Añade los elementos especificados al HyperLogLog. |
| 2 | PFCOUNT key [key ...] Devuelve la cardinalidad estimada del HyperLogLog dado. |
| 3 | PFMERGE destkey sourcekey [sourcekey ...] Combina varios HyperLogLog en un solo HyperLogLog. |