目次
1.ハイパーログログ
まず、次の 2 つの概念を理解します。
UV: 正式名称はユニーク ビジターであり、ユニーク ビジターとも呼ばれ、インターネットを通じてこの Web ページにアクセスして閲覧する自然人を指します。
同じユーザーが 1 日に複数回 Web サイトにアクセスした場合、記録されるのは 1 回だけです。
PV: 正式名称はページビューで、ユーザーが Web サイト上のページにアクセスするたびに 1 つの PV が記録され、ユーザーはそのページを複数回開きます。
表面には複数のPVが収録されています。
Web サイトのトラフィックを測定するためによく使用されます。
一般に、UV は PV よりもはるかに大きいため、同じ Web サイトへの訪問数を測定する場合は、多くの要素を考慮する必要があります。
したがって、これら 2 つの値を参考値として使用するだけです
ユーザーがカウントされているかどうかを判断するには、カウントされたユーザー情報を保存する必要があるため、サーバー側で UV 統計を行うのはさらに面倒になります。
しかし、訪問したユーザーをすべてRedisに保存するとデータ量が膨大になってしまいますが、どう対処するのでしょうか?
Hyperloglog (HLL) は、Loglog アルゴリズムから派生した確率的アルゴリズムで、すべてを保存する必要なく、非常に大きなセットの濃度を決定するために使用されます。
価値。
関連するアルゴリズム原則を参照できます: https://juejin.cn/post/6844903785744056333#Heading-0
Redis の HLL は文字列構造に基づいて実装されており、単一の HLL のメモリは常に 16kb 未満であり、メモリ使用量は驚くほど低くなります。
トレードオフとして、その測定は確率的であり、誤差は 0.81% 未満です。
しかし、UV 統計の場合、これはまったく無視できます。
2. 数百万のデータの統計をテストする
テストのアイデア: 単体テストを直接使用して 100 万個のデータを HyperLogLog に追加し、メモリ使用量と統計的効果がどのようになるかを確認します。
テスト後: エラーは許容範囲内であり、メモリ使用量は最小限です。