English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Redis HyperLogLog

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

Redis HyperLogLog est une algorithmique de statistiques de cardinalité, les avantages de HyperLogLog sont que, lorsque le nombre ou le volume des éléments d'entrée est extrêmement grand, l'espace nécessaire pour calculer le cardinal est toujours fixe et très petite.

Dans Redis, chaque clé HyperLogLog ne nécessite que 12 KB de mémoire, il est possible de calculer une valeur approchée 2^64 de base d'un ensemble d'éléments différents Le nombre. Cela forme une opposition frappante avec les ensembles formés par la base de calcul, où plus les éléments sont nombreux, plus la mémoire consommée est importante.

Mais, puisqu'il ne stocke pas les éléments d'entrée eux-mêmes, HyperLogLog ne peut pas retourner les éléments individuels d'une entrée comme un ensemble. HyperLogLog 不能像集合那样,返回输入的各个元素。

什么是基数?

比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

在线示例

以下示例演示了 HyperLogLog 的工作过程:

redis 127.0.0.1:6379> PFADD w3codeboxkey "redis"
1) (integer) 1
redis 127.0.0.1:6379> PFADD w3codeboxkey "mongodb"
1) (integer) 1
redis 127.0.0.1:6379> PFADD w3codeboxkey "mysql"
1) (integer) 1
redis 127.0.0.1:6379> PFCOUNT w3codeboxkey
(integer) 3

Redis HyperLogLog 命令

下表列出了 redis HyperLogLog 的基本命令:

序号命令及描述
1PFADD key element [element ...]
添加指定元素到 HyperLogLog 中。
2PFCOUNT key [key ...]
返回给定 HyperLogLog 的基数估算值。
3PFMERGE destkey sourcekey [sourcekey ...]
将多个 HyperLogLog 合并为一个 HyperLogLog