0

PFADD コマンドに関する Redis のドキュメントによると:

戻り値
 整数の返信、具体的には:
 少なくとも 1 つの HyperLogLog 内部レジスターが変更された場合は 1。それ以外の場合は 0。

次の2点について説明できる人はいますか?

  1. これは、カウンタが実際に 1 インクリメントされた場合、PFADD が「1」を返すことを意味しますか? PFADD を実行した後、新しい PFCOUNT が になることが保証されていますPFCOUNT(before) + output of PFADDか? 言い換えれば、シングルスレッドのクライアントは、PFADD の出力のみを使用してカウントを追跡できますか?
  2. PFADD が「0」または「1」を返す場合、それぞれ「キャッシュ ヒット」と「キャッシュ ミス」に変換されますか?
4

1 に答える 1

3

これは、カウンタが実際に 1 インクリメントされた場合、PFADD が「1」を返すことを意味しますか?

いいえ。

戻り値は純粋にブール値です。つまり、基になる HyperLogLog が変更されたかどうかのみを示します。

PFADDを実行した後、 newPFCOUNTが になることが保証されていますPFCOUNT(before) + output of PFADDか?

いいえ、 の出力はPFADDカウントを表していないためです (上記を参照)。

そうは言っても、元のブログ投稿でantirezPFADDが説明しているように、 の出力をトリガーとして PFCOUNT再度呼び出すことをお勧めします。

要素を追加すると、要素が実際にいくつかのレジスタを変更する確率が減少するため、これはユーザーにとって興味深いことです。API が新しいカーディナリティが利用可能であるという事実についてのヒントを提供できるという事実は、要素を継続的に追加し 新しいカーディナリティが利用可能になった場合にのみ概算のカーディナリティを取得するプログラムを可能にします。

やっと:

PFADD が「0」または「1」を返す場合、それぞれ「キャッシュ ヒット」と「キャッシュ ミス」に変換されますか?

いいえ。上記で詳しく説明したように、これは新しいカーディナリティが利用可能であることを示しているだけです。

于 2014-06-25T08:17:07.957 に答える