コアデータ分析

大規模カウント

ユニーク訪問者、「これは見たことがあるか」、上位アイテム、頻度を、数十億件のイベントにわたって、それぞれ少量の固定メモリで扱います。

確率的データ構造
4
構造ごとのメモリ
固定
誤差範囲
既知
ステップ 1 / 5
ユニーク訪問者

訪問者IDをHyperLogLogに追加します。どれだけ届いてもメモリは小さいままです。

サンプルセッションplaying
# ユニーク訪問者
hotkv> PFADD visitors:2026-10-16 user:42 user:77 user:91
(integer) 1

実際のHotKVコマンドと応答例を使ったアニメーションのウォークスルーです。任意のステップをクリックすると、そこに移動します。 コマンドと応答は、HotKVで実際に入力し表示されるとおり英語のままです。

課題

「ユニークユーザーは何人か」「このメールは以前送ったか」「上位の検索語は何か」に正確に答えるには、異なるアイテムが増えるたびに大きくなるメモリが必要です。数十億件のイベントともなれば、質問1つにつきギガバイト単位のセットとカウンターになります。

HotKVでの解決方法

確率的データ構造は、小さく既知の誤差と引き換えに、一定のメモリで済ませます。HyperLogLogは異なるアイテムを数え、Bloomフィルターは所属判定に答え、Top-Kは最も頻繁なアイテムを追跡し、Count-minスケッチは任意のアイテムの出現頻度を推定します。4つすべてがHotKVに組み込まれています。

ステップごとに

コマンドごとに何が起きるか

  1. 01

    ユニーク訪問者

    訪問者IDをHyperLogLogに追加します。どれだけ届いてもメモリは小さいままです。

    PFADD visitors:2026-10-16 user:42 user:77 user:91
  2. 02

    何人?

    小さな標準誤差で、異なる訪問者の数を推定します。

    PFCOUNT visitors:2026-10-16
  3. 03

    二度と重複送信しない

    キャンペーンメールを送る前に、このアドレスにすでに届いているかを確認します。

    BF.EXISTS sent:campaign:fall ada@example.com
  4. 04

    上位の検索語

    Top-Kが、イベントの流入に合わせて最も頻繁なアイテムを保持します。

    TOPK.LIST searches:today WITHCOUNT
  5. 05

    任意のアイテムの頻度

    Count-minスケッチが、一覧にあるかどうかにかかわらず、任意のアイテムの回数を推定します。

    CMS.QUERY pageviews /home /pricing /blog
活用シーン

実際のシナリオ

Webとアプリの分析

ページや機能ごとの日次・月次のユニークユーザー数を、PFMERGEで日をまたいで統合します。

メールと通知

Bloomフィルターが、リトライやキャンペーンをまたいだ重複送信を防ぎます。

検索とコマース

上位のクエリや最も閲覧された商品を、マーチャンダイジングのためにライブで追跡します。

標準搭載

得られるもの

HyperLogLog

バケットをまたいで統合できる異なり数のカウント。

PFADDPFCOUNTPFMERGE

Bloomフィルター

偽陽性率を設定できる所属判定。

BF.RESERVEBF.ADDBF.EXISTS

Top-K

ストリーム内で最も頻繁なアイテム。

TOPK.ADDTOPK.LIST

Count-minスケッチ

任意のアイテムの頻度推定。

CMS.INCRBYCMS.QUERY

よくある質問

どのくらい正確ですか?

Bloomフィルターでは誤り率を、Count-minスケッチでは幅と深さを設定できます。HyperLogLogの標準誤差は小さく固定です。

Bloomフィルターが、見たものを見逃すことはありますか?

いいえ。偽陽性を報告することはあっても、偽陰性は決してありません。

モジュールは必要ですか?

いいえ。これらはHotKVの一部です。

関連するユースケース

ご自身のワークロードで試してみましょう

HotKVはRedisプロトコルに対応しているため、既存のクライアントを向けるだけで、これらと同じコマンドを実行できます。