Redis HyperLogLog 操作

RedisRedisBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験(Lab)では、Redis HyperLogLog の操作について学びます。HyperLogLog は Redis の強力なデータ構造であり、非常に大きなデータセットでも、セット内の一意な要素の数を推定できます。これはカーディナリティ推定(cardinality estimation)として知られています。ここでは、PFADD を使用してアイテムを追加し、PFCOUNT を使用して一意なアイテムをカウントし、PFMERGE を使用して HyperLogLog をマージする方法を学びます。この実験(Lab)では、一意なユーザーを効率的に追跡する実践的な経験が得られます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL redis(("Redis")) -.-> redis/RedisGroup(["Redis"]) redis/RedisGroup -.-> redis/access_cli("Connect Using CLI") redis/RedisGroup -.-> redis/count_list("Get List Length") subgraph Lab Skills redis/access_cli -.-> lab-552097{{"Redis HyperLogLog 操作"}} redis/count_list -.-> lab-552097{{"Redis HyperLogLog 操作"}} end

PFADD によるアイテムの追加

このステップでは、PFADD コマンドを使用して HyperLogLog にアイテムを追加する方法を学びます。HyperLogLog が存在しない場合、PFADD は自動的にそれを作成します。

PFADD について

PFADD コマンドは、1 つまたは複数の要素を HyperLogLog に追加します。

構文:

PFADD key element [element ...]
  • key: HyperLogLog の名前。
  • element: HyperLogLog に追加する要素。

例:

まず、ターミナルで redis-cli コマンドを使用して Redis サーバーに接続します。

redis-cli

次に、myhyperloglog という名前の HyperLogLog を作成し、いくつかのアイテムを追加してみましょう。

PFADD myhyperloglog item1 item2 item3

次の出力が表示されるはずです。

(integer) 1

(integer) 1 という応答は、少なくとも 1 つの要素が HyperLogLog に追加されたことを示します。これは、すべての要素が新しい(一意の)要素であったとは限りません。

コマンド実行後、redis-cli を終了することを忘れないでください。

exit

実践:

  1. redis-cli を使用して Redis サーバーに接続します。
  2. users という名前の HyperLogLog を作成します。
  3. 次のユーザー ID を users HyperLogLog に追加します:user1, user2, user3, user4, user5
  4. redis-cli を終了します。
PFADD users user1 user2 user3 user4 user5
exit

次のステップでは、PFCOUNT コマンドを使用して、一意なユーザーの数を推定する方法を学びます。

PFCOUNT による一意なアイテムのカウント

このステップでは、PFCOUNT コマンドを使用して、HyperLogLog 内の一意なアイテムの数を推定する方法を学びます。

PFCOUNT について

PFCOUNT コマンドは、HyperLogLog によって観測されたセットのカーディナリティ(cardinality)(一意な要素の数)の 近似値 を返します。HyperLogLog は正確なカウントではなく、推定値を提供することに注意することが重要です。

構文:

PFCOUNT key
  • key: HyperLogLog の名前。

例:

前のステップから続けて、users HyperLogLog 内の一意なユーザーの数を推定してみましょう。

redis-cli を使用して Redis サーバーに接続します。

redis-cli

次に、PFCOUNT コマンドを使用します。

PFCOUNT users

次のような出力が表示されるはずです。

(integer) 5

出力 (integer) 5 は、HyperLogLog が users HyperLogLog に約 5 人の一意なユーザーがいると推定していることを示します。

redis-cli を終了します。

exit

実践:

  1. redis-cli を使用して Redis サーバーに接続します。
  2. PFCOUNT コマンドを使用して、users HyperLogLog 内の一意なユーザーの数を推定します。
  3. redis-cli を終了します。
PFCOUNT users
exit

次に、重複を含むより多くのユーザーを users HyperLogLog に追加し、再度カウントしてみましょう。

redis-cli
PFADD users user3 user6 user7
PFCOUNT users
exit

次のステップでは、HyperLogLog をマージする方法を学びます。

PFMERGE による HyperLogLog のマージ

このステップでは、PFMERGE コマンドを使用して、複数の HyperLogLog を 1 つの HyperLogLog にマージする方法を学びます。これは、データが複数の HyperLogLog に分散しており、一意な要素の合計の推定値を取得したい場合に役立ちます。

PFMERGE について

PFMERGE コマンドは、複数の HyperLogLog を宛先(destination)の HyperLogLog にマージします。宛先の HyperLogLog には、すべてのソース(source)の HyperLogLog からの要素の和集合が含まれます。

構文:

PFMERGE destkey sourcekey [sourcekey ...]
  • destkey: 宛先の HyperLogLog の名前(マージされた結果が格納される場所)。存在しない場合は作成されます。存在する場合は上書きされます。
  • sourcekey: マージするソースの HyperLogLog の名前。

例:

new_users という新しい HyperLogLog を作成し、いくつかのユーザーを追加してみましょう。

redis-cli
PFADD new_users user8 user9 user10
exit

次に、usersnew_users の HyperLogLog を、all_users という新しい HyperLogLog にマージします。

redis-cli
PFMERGE all_users users new_users

次の出力が表示されるはずです。

OK

OK という応答は、マージ操作が成功したことを示します。

次に、all_users HyperLogLog 内の一意なユーザーの数を推定してみましょう。

PFCOUNT all_users
exit

次のような出力が表示されるはずです。

(integer) 7

出力 (integer) 7 は、HyperLogLog が、マージされた all_users HyperLogLog に約 7 人の一意なユーザーがいると推定していることを示します。

実践:

  1. redis-cli を使用して Redis サーバーに接続します。
  2. PFMERGE コマンドを使用して、usersnew_users の HyperLogLog を、all_users という新しい HyperLogLog にマージします。
  3. PFCOUNT コマンドを使用して、all_users HyperLogLog 内の一意なユーザーの数を推定します。
  4. redis-cli を終了します。
PFMERGE all_users users new_users
PFCOUNT all_users
exit

これで、Redis での HyperLogLog の使用に関する実験(Lab)は完了です。アイテムの追加、一意なアイテムのカウント、および HyperLogLog のマージの方法を学びました。

まとめ

この実験(Lab)では、Redis で PFADD コマンドを使用して、HyperLogLog データ構造に要素を追加する方法を学びました。PFADD コマンドは、要素自体を格納せずに、セットのカーディナリティ(cardinality)を推定するために HyperLogLog を効率的に更新します。また、PFCOUNT を使用して HyperLogLog のカーディナリティを推定する方法、および PFMERGE を使用して複数の HyperLogLog を 1 つにマージする方法も学びました。これにより、大規模なデータセット内の一意な要素を追跡するための強力かつ効率的な方法が提供されます。