Redis HyperLogLog
Redis HyperLogLog
1、紹介
Redisは2.8.9バージョンでHyperLogLog構造を追加した.
Redis HyperLogは基数統計を行うアルゴリズムであり、HyperLogの利点は、入力要素の数や体積が非常に大きい場合、基数を計算するのに必要な空間が常に固定され、小さいことである.
Redisでは、HyperLogキーごとに12 KBのメモリを消費するだけで、2^64個近くの異なる要素の基数を計算することができます.これは,基数を計算する際,要素が多ければ多いほどメモリを消費する集合とは対照的である.
ただし、HyperLogは入力要素に基づいて基数を計算するだけであり、入力要素自体は格納されないため、HyperLogは集合のように入力された各要素を返すことはできない.eg:データセット{1,3,5,7,5,7,8}では、このデータセットの基数セットは{1,3,5,7,8}であり、基数(要素を繰り返さない)は5である.基数推定とは,誤差が許容できる範囲で基数を迅速に計算することである.
2、Redis HyperLogコマンド
1 pfadd key element [element ...] 指定した要素をhyperloglogに追加します.2 pfcount key [key ...] 与えられたhyperloglogの基数推定値を返し、基数には比較的小さな誤差がある3 pfmerge destkey sourcekey[sourcekey...]複数のhyperloglogを1つのhyperloglogにマージ
eg:
3、シーンを適用する
基数は大きくなくて、データ量は大きくなくて使えなくて、少し材料が小さくて空間を浪費して限界があって、基数の数量を統計するしかなくて、具体的な内容が何なのかを知ることができません
統計登録IP数統計毎日アクセスIP数統計ページリアルタイムUV数統計オンラインユーザ数統計ユーザ毎日検索異なる単語の個数
1、紹介
Redisは2.8.9バージョンでHyperLogLog構造を追加した.
Redis HyperLogは基数統計を行うアルゴリズムであり、HyperLogの利点は、入力要素の数や体積が非常に大きい場合、基数を計算するのに必要な空間が常に固定され、小さいことである.
Redisでは、HyperLogキーごとに12 KBのメモリを消費するだけで、2^64個近くの異なる要素の基数を計算することができます.これは,基数を計算する際,要素が多ければ多いほどメモリを消費する集合とは対照的である.
ただし、HyperLogは入力要素に基づいて基数を計算するだけであり、入力要素自体は格納されないため、HyperLogは集合のように入力された各要素を返すことはできない.eg:データセット{1,3,5,7,5,7,8}では、このデータセットの基数セットは{1,3,5,7,8}であり、基数(要素を繰り返さない)は5である.基数推定とは,誤差が許容できる範囲で基数を迅速に計算することである.
2、Redis HyperLogコマンド
1 pfadd key element [element ...] 指定した要素をhyperloglogに追加します.2 pfcount key [key ...] 与えられたhyperloglogの基数推定値を返し、基数には比較的小さな誤差がある3 pfmerge destkey sourcekey[sourcekey...]複数のhyperloglogを1つのhyperloglogにマージ
eg:
127.0.0.1:6379> pfadd final redis es es python java mongodb java oracle java mysql es
(integer) 1
127.0.0.1:6379> pfcount final
(integer) 7
127.0.0.1:6379> pfadd pf1 es redis scala spark hadoop java python hive
(integer) 1
127.0.0.1:6379> pfcount pf1
(integer) 8
127.0.0.1:6379> pfmerge upf final pf1
OK
127.0.0.1:6379> pfcount upf
(integer) 11
3、シーンを適用する
基数は大きくなくて、データ量は大きくなくて使えなくて、少し材料が小さくて空間を浪費して限界があって、基数の数量を統計するしかなくて、具体的な内容が何なのかを知ることができません
統計登録IP数統計毎日アクセスIP数統計ページリアルタイムUV数統計オンラインユーザ数統計ユーザ毎日検索異なる単語の個数