HyperLogLog Redis

Redis a ajouté la structure HyperLogLog dans la version 2.8.9.

Redis HyperLogLog est un algorithme utilisé pour les statistiques de cardinalité. L'avantage de HyperLogLog est que lorsque le nombre ou le volume d'éléments d'entrée est très, très grand, l'espace nécessaire pour calculer la cardinalité est toujours fixe et très petit.

Dans Redis, chaque clé HyperLogLog ne nécessite que 12 KB de mémoire pour calculer la cardinalité de près de 2^64 éléments distincts. Cela contraste fortement avec les ensembles, où plus il y a d'éléments, plus la mémoire est consommée lors du calcul de la cardinalité.

Cependant, comme HyperLogLog calcule uniquement la cardinalité en fonction des éléments d'entrée et ne stocke pas les éléments d'entrée eux-mêmes, HyperLogLog ne peut pas renvoyer les éléments d'entrée individuels comme les ensembles peuvent le faire.


Qu’est-ce que la cardinalité ?

Par exemple, étant donné l’ensemble de données {1, 3, 5, 7, 5, 7, 8}, l’ensemble de cardinalité de cet ensemble de données est {1, 3, 5, 7, 8}, et la cardinalité (éléments distincts) est 5. L’estimation de cardinalité consiste à calculer rapidement la cardinalité dans une marge d’erreur acceptable.


Exemple

L’exemple suivant montre comment fonctionne HyperLogLog :

redis 127.0.0.1:6379> PFADD examplekey "redis"

1) (integer) 1

redis 127.0.0.1:6379> PFADD examplekey "mongodb"

1) (integer) 1

redis 127.0.0.1:6379> PFADD examplekey "mysql"

1) (integer) 1

redis 127.0.0.1:6379> PFCOUNT examplekey

(integer) 3

Commandes Redis HyperLogLog

Le tableau suivant répertorie les commandes de base de Redis HyperLogLog :

Non.Commande et description
1PFADD key element [element ...]
Ajoute l’élément spécifié au HyperLogLog.
2PFCOUNT key [key ...]
Renvoie la cardinalité estimée du HyperLogLog donné.
3PFMERGE destkey sourcekey [sourcekey ...]
Fusionne plusieurs HyperLogLog en un seul HyperLogLog.
Autres extensions