Redis ハイパーログログ
Redis はバージョン 2.8.9 で HyperLogLog 構造を追加しました。
Redis HyperLogLog は、カーディナリティ統計に使用されるアルゴリズムです。HyperLogLog の利点は、入力要素の数または量が非常に大きい場合に、カーディナリティの計算に必要なスペースが常に固定されていることです。 、そして非常に小さい。
Redis では、各 HyperLogLog キーは、ほぼ 2^64 の異なる要素の基礎を計算するために 12 KB のメモリのみを必要とします。 番号。これは、要素数が多いほど、より多くのメモリを消費するコレクションとは対照的です。
ただし、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 キー要素 [要素 ...] 指定された要素を HyperLogLog に追加します。 |
2 | PFCOUNT key [key ...] 指定された HyperLogLog のカーディナリティ推定値を返します。 |
3 | PFMERGE destkeysourcekey [sourcekey ...] 複数のHyperLogLogを1つのHyperLogLogにマージ |