検索
ホームページデータベースRedisHyperLogLog を使用して Redis を実装する方法

1. 概要

Redis は、カーディナリティ統計のためにバージョン 2.8.9 で HyperLogLog データ構造を追加しました。利点は、入力要素の数が非常に多い場合、カーディナリティの計算に必要なスペースが比較的少なくて済むことです。小さく、一般に比較的一定です。

Redis では、ほぼ 2^64 の異なる要素のカーディナリティを計算するために、各 HyperLogLog キーに必要なメモリは 12 KB だけです。これは、要素が多いコレクションほど多くのメモリを消費するカーディナリティの計算とは対照的です。ただし、HyperLogLog は入力要素に基づいてカーディナリティを計算するだけで、入力要素自体は保存しないため、コレクションのように入力の個々の要素を返すことはできません。

2. カーディナリティとは何ですか?

たとえば、データ セットが {1, 3, 5, 7, 5, 7, 8} の場合、このデータのカーディナリティ セットはセットは {1, 3, 5 ,7, 8}、カーディナリティ (非繰り返し要素) は 5 です。カーディナリティの推定とは、許容誤差範囲内でカーディナリティを迅速に計算することです。

3. コマンド

現在、HyperLogLog でサポートされているコマンドは PFADD、PFCOUNT、および PFMERGE の 3 つだけです。まずは一つずつ紹介していきましょう。

3.1 PFADD

利用可能な最も古いバージョン: 2.8.9。時間計算量: O(1)。

PFADD コマンドは、要素 (複数の要素を指定可能) を HyperLogLog データ構造に追加し、最初のパラメーター キーで指定されたキーに格納できます。カーディナリティ推定 (評価された要素の数) が変化した場合は 1 を返し、それ以外の場合は 0 を返します。つまり、コマンドの実行後にカーディナリティ推定が変化したかどうかを確認します。指定されたキーが存在しない場合は、空の HyperLogLog データ構造 (つまり、指定された文字列長とエンコーディングを持つ Redis 文字列) が作成されます。要素パラメータを指定せずにキーのみを指定してコマンドを呼び出すこともできます。キーが存在する場合は何もせず 0 を返し、キーが存在しない場合は新しい HyperLogLog データ ノードが作成されて 1 を返します。基本的に、要素を保存せずに新しい HyperLogLog データ構造を生成するだけです。

(1) 構文形式:

PFADD key element [element ...]

(2) 戻り値:

整数型、要素が 1 つ以上追加された場合は 1 が返され、それ以外の場合は 0 が返されます。 。

(3) 例:

127.0.0.1:6379> PFADD hll a b c d e f g
(integer) 1
127.0.0.1:6379> pfcount hll
(integer) 7

3.2 PFCOUNT

利用可能な最も古いバージョン: 2.8.9。時間計算量: O(1)。複数の比較的大きなキーの場合、時間計算量は O(N) です。

PFCOUNT コマンドを使用して、HyperLogLog の推定カーディナリティ値 (つまり、要素の数) を取得します。このコマンドは、キーが存在しない場合は 0 を返し、それ以外の場合はキーのカーディナリティの推定値を返します。複数のキーの場合、複数の HyperLogLog を一時的な HyperLogLog にマージすることで計算された、複数の HyperLogLog の和集合のカーディナリティ推定値が返されます。 HyperLogLog は、最小限の一定量のメモリを使用して、コレクションの一意の要素の数をカウントできます。各 HyperLogLog は、12K とキー自体の数バイトのみを使用します。

(1) 構文形式:

PFCOUNT key [key ...]

(2) 戻り値:

Integer、指定された HyperLogLog のカーディナリティ推定値を返します。複数の HyperLogLog がある場合、和集合はカーディナリティの推定値。

(3) 例:

127.0.0.1:6379> PFADD hll foo bar zap
(integer) 1
127.0.0.1:6379> PFADD hll zap zap zap
(integer) 0
127.0.0.1:6379> PFADD hll foo bar
(integer) 0
127.0.0.1:6379> PFCOUNT hll
(integer) 3
127.0.0.1:6379> PFADD some-other-hll 1 2 3
(integer) 1
127.0.0.1:6379> PFCOUNT some-other-hll
(integer) 3
127.0.0.1:6379> PFCOUNT hll some-other-hll
(integer) 6

(4) 制限事項:

HyperLogLog によって返される結果は正確ではなく、エラー率は約 0.81% です。

このコマンドを使用すると、HyperLogLog が変更され、最後に計算されたベースを保存するために 8 バイトが使用されます。したがって、技術的に言えば、PFCOUNT は書き込みコマンドです。

(5) パフォーマンスの問題

集中的な HyperLogLog の処理には理論的には時間がかかりますが、キーが 1 つだけ指定されている場合でも PFCOUNT コマンドは高いパフォーマンスを発揮します。これは、PFCOUNT が最後の計算の基数をキャッシュし、ほとんどの場合 PFADD コマンドがレジスタを更新しないため、この基数が常に変更されるわけではないためです。したがって、1 秒あたり数百のリクエストの効果を達成できます。

PFCOUNT コマンドを使用して複数のキーを処理すると、HyperLogLog がマージされます。この手順は非常に時間がかかります。さらに重要なのは、共用体の計算されたカーディナリティをキャッシュできないことです。複数のキーを使用する場合、PFCOUNT の実行には時間がかかることがあります (通常はミリ秒程度)。そのため、過度に使用することはお勧めできません。

このコマンドの単一キー実行セマンティクスと複数キー実行セマンティクスは異なり、パフォーマンスも異なることに注意してください。マルチキー実行セマンティクスを過度に使用することはお勧めできません。

3.3 PFMERGE

利用可能な最も古いバージョン: 2.8.9。時間計算量: O(N)、N はマージされる HyperLogLog の数です。

PFMERGE コマンドを使用して、複数の HyperLogLog を 1 つの HyperLogLog にマージできます。マージされた HyperLogLog のカーディナリティの推定値は、指定されたすべての HyperLogLog の結合を取得することによって計算されます。計算結果は指定したキーに保存されます。

構文形式:

PFMERGE destkey sourcekey [sourcekey ...]

戻り値:

OK を返します。

例:

127.0.0.1:6379> PFADD hll1 foo bar zap a
(integer) 1
127.0.0.1:6379> PFADD hll2 a b c foo
(integer) 1
127.0.0.1:6379> PFMERGE hll3 hll1 hll2
OK
127.0.0.1:6379> PFCOUNT hll3
(integer) 6

以上がHyperLogLog を使用して Redis を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Redis:キー価値データストアのガイドRedis:キー価値データストアのガイドMay 02, 2025 am 12:10 AM

Redisは、データベース、キャッシュ、メッセージブローカーとして使用されるオープンソースメモリデータ構造ストレージであり、高速応答と高い並行性が必要なシナリオに適しています。 1.Redisはメモリを使用してデータを保存し、マイクロ秒の読み取り速度と書き込み速度を提供します。 2.文字列、リスト、コレクションなどのさまざまなデータ構造をサポートします。3。Redisは、RDBおよびAOFメカニズムを介してデータの持続性を実現します。 4.シングルスレッドモデルと多重化テクノロジーを使用して、リクエストを効率的に処理します。 5.パフォーマンス最適化戦略には、LRUアルゴリズムとクラスターモードが含まれます。

Redis:キャッシュ、セッション管理などRedis:キャッシュ、セッション管理などMay 01, 2025 am 12:03 AM

Redisの関数には、主にキャッシュ、セッション管理、その他の機能が含まれます。1)キャッシュ関数はメモリを介してデータを保存して読み取り速度を向上させ、eコマースWebサイトなどの高周波アクセスシナリオに適しています。 2)セッション管理関数は、分散システムでセッションデータを共有し、有効期限のあるメカニズムを通じて自動的にクレンジングします。 3)リアルタイムメッセージプッシュおよびマルチスレッドシステムおよびその他のシナリオに適した、パブリッシュサブスクライブモード、分散ロック、カウンターなどのその他の機能。

Redis:そのコア機能と利点の調査Redis:そのコア機能と利点の調査Apr 30, 2025 am 12:22 AM

Redisのコア関数には、メモリストレージと持続性メカニズムが含まれます。 1)メモリストレージは、高性能アプリケーションに適した非常に高速な読み取り速度と書き込み速度を提供します。 2)永続性は、RDBとAOFによってデータが失われないことを保証し、選択はアプリケーションのニーズに基づいています。

Redisのサーバー側操作:提供するものRedisのサーバー側操作:提供するものApr 29, 2025 am 12:21 AM

redis'sserver-sideoperations offferidions and forexuctingcomplexoperationsontheserver.1)機能を調整することで、javascript、orredis'sscriptinglanguage、infulancingscalabilityandmantenmention

Redis:データベースまたはサーバー?役割を分かりやすいRedis:データベースまたはサーバー?役割を分かりやすいApr 28, 2025 am 12:06 AM

redisisbothadatabaseandaserver.1)asadatabase、itusesin memorystorage forfastaccess、理想的なforreal-timeapplicationsandcaching.2)asaserver、itupportspub/submessagingandaging andluascriptingforreal-communicationandserver-sideoperation。

Redis:NOSQLアプローチの利点Redis:NOSQLアプローチの利点Apr 27, 2025 am 12:09 AM

Redisは、高性能と柔軟性を提供するNOSQLデータベースです。 1)大規模データと高い並行性の処理に適したキー価値ペアを介してデータを保存します。 2)メモリストレージとシングルスレッドモデルは、速い読み取りと書き込みと原子性を確保します。 3)RDBおよびAOFメカニズムを使用してデータを持続し、高可用性とスケールアウトをサポートします。

Redis:そのアーキテクチャと目的を理解するRedis:そのアーキテクチャと目的を理解するApr 26, 2025 am 12:11 AM

Redisは、主にデータベース、キャッシュ、メッセージブローカーとして使用されるメモリデータ構造ストレージシステムです。そのコア機能には、シングルスレッドモデル、I/O多重化、持続メカニズム、複製、クラスタリング機能が含まれます。 Redisは、キャッシュ、セッションストレージ、メッセージキューのための実際のアプリケーションで一般的に使用されます。適切なデータ構造を選択し、パイプラインとトランザクションを使用し、監視とチューニングを使用することにより、パフォーマンスを大幅に改善できます。

Redis vs. SQLデータベース:重要な違​​いRedis vs. SQLデータベース:重要な違​​いApr 25, 2025 am 12:02 AM

RedisデータベースとSQLデータベースの主な違いは、Redisが高性能および柔軟性要件に適したインメモリデータベースであることです。 SQLデータベースは、複雑なクエリとデータの一貫性要件に適したリレーショナルデータベースです。具体的には、1)Redisは高速データアクセスとキャッシュサービスを提供し、キャッシュおよびリアルタイムのデータ処理に適した複数のデータ型をサポートします。 2)SQLデータベースは、テーブル構造を介してデータを管理し、複雑なクエリとトランザクション処理をサポートし、データの一貫性を必要とするeコマースや金融システムなどのシナリオに適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、