Redis コマンド:HyperLogLog


Redis ハイパーログログ

Redis HyperLogLog は、カーディナリティ (一意の要素の数) を推定するために使用される高度なデータ構造であり、メモリ フットプリントが小さく、計算時間が固定されているという利点があり、大規模データの統計分析に適しています。

HyperLogLog アルゴリズムは確率統計手法に基づいており、一定の誤差範囲内でおおよその結果を得ることができるため、完全に正確なカウントを必要とせずにデータ セットのカーディナリティを迅速に推定するのに適しています。Redis では、各 HyperLogLog キーは 2^64 データを計算するために約 12KB のメモリのみを必要とします。

HyperLogLog の原理は、ランダム マッピング関数を通じて入力要素を固定サイズのビットマップにマッピングし、ビットマップ内のゼロ ビットの数を通じてカーディナリティを推定することです。HyperLogLog は、複数のランダム マッピング関数の使用、スパース ビットマップの使用など、エラー率を下げるためにいくつかの手法を使用します。

実際のアプリケーションでは、HyperLogLog は次のシナリオで広く使用できます。

  1. ウェブサイトの UV 統計: 大規模なウェブサイトの場合、各ユーザーの訪問数を正確にカウントすることは非常に難しく、コストがかかります。HyperLogLog を使用すると、ユーザーの IP アドレスの重複を除去し、おおよそのユニーク訪問者数を取得して、Web サイトへのユニーク訪問者数を推定できます。
  2. ソーシャル ネットワーク分析: ソーシャル ネットワークでは、ユーザー間のつながりとその影響力に注目することがよくあります。HyperLogLog を使用すると、ソーシャル ネットワーク内のユーザーのファン、フォロワー、その他の指標の数を推定し、ネットワーク分析とレコメンデーション システムの最適化を実行できます。
  3. 広告のクリック数のカウント: オンライン広告システムでは、広告のクリック数を正確にカウントすることが非常に重要です。HyperLogLog を使用すると、広告をクリックしたユニーク ユーザーの数を迅速に推定できるため、広告主が広告の効果を評価するのに役立ちます。

つまり、Redis HyperLogLog は、メモリ使用量と計算時間のバランスをとり、大規模データのカーディナリティの高速推定を実現できる非常に実用的なデータ構造です。

Redis HyperLogLog を使用した例を次に示します。

毎日多くのユーザーがアクセスする Web サイトがあるとします。毎日ユニーク訪問者 (UV) をカウントしたいと考えています。

  1. PFADD コマンドを使用して、各ユーザーのアクセス レコードを HyperLogLog に追加します。
PFADD uv:daily-report 192.168.0.1
PFADD uv:daily-report 192.168.0.2
...
  1. PFCOUNT コマンドを使用して、その日の UV 数を取得します。
PFCOUNT uv:daily-report
  1. 必要に応じて、PFMERGE コマンドを使用して、複数日の UV 量を結合できます。
PFMERGE uv:monthly-report uv:daily-report1 uv:daily-report2 ...

HyperLogLog はカーディナリティのカウントにハッシュ関数のみを使用するため、一定のエラー率が存在することに注意してください。通常、このエラー率は非常に小さく、HyperLogLog のサイズを増やすことでさらに減らすことができます。実際の使用では、合理的な判断を行うために、データの分布とエラーの状況に注意を払う必要があります。

Redis HyperLogLog コマンド

以下は、Redis HyperLogLog の基本コマンドのリストです。

注文 説明する
PFADD キー要素 [要素 …] 1 つ以上の要素を HyperLogLog に追加します。
PFCOUNT キー [キー …] HyperLogLog 内の固有の要素の推定数を返します。
PFMERGE 宛先キー ソースキー [ソースキー …] 1 つ以上の HyperLogLog を 1 つの HyperLogLog にマージします。

上記のコマンドでは、keyHyperLogLog のキー名を表し、element追加される要素を表し、destkeyマージされる HyperLogLog のキー名を表し、sourcekeyマージされる HyperLogLog のキー名を表すことに注意してください。

これらのコマンドを使用すると、Redis で HyperLogLog データ構造を作成および操作して、コレクション内の固有の要素の数を効率的に推定できます。

おすすめ

転載: blog.csdn.net/m0_62617719/article/details/133149430