はじめに
この実験(Lab)では、Redis HyperLogLog の操作について学びます。HyperLogLog は Redis の強力なデータ構造であり、非常に大きなデータセットでも、セット内の一意な要素の数を推定できます。これはカーディナリティ推定(cardinality estimation)として知られています。ここでは、PFADD を使用してアイテムを追加し、PFCOUNT を使用して一意なアイテムをカウントし、PFMERGE を使用して HyperLogLog をマージする方法を学びます。この実験(Lab)では、一意なユーザーを効率的に追跡する実践的な経験が得られます。
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
実践:
redis-cliを使用して Redis サーバーに接続します。usersという名前の HyperLogLog を作成します。- 次のユーザー ID を
usersHyperLogLog に追加します:user1,user2,user3,user4,user5。 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
実践:
redis-cliを使用して Redis サーバーに接続します。PFCOUNTコマンドを使用して、usersHyperLogLog 内の一意なユーザーの数を推定します。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
次に、users と new_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 人の一意なユーザーがいると推定していることを示します。
実践:
redis-cliを使用して Redis サーバーに接続します。PFMERGEコマンドを使用して、usersとnew_usersの HyperLogLog を、all_usersという新しい HyperLogLog にマージします。PFCOUNTコマンドを使用して、all_usersHyperLogLog 内の一意なユーザーの数を推定します。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 つにマージする方法も学びました。これにより、大規模なデータセット内の一意な要素を追跡するための強力かつ効率的な方法が提供されます。


