Bloom フィルターの開始方法 - Amazon ElastiCache

Bloom フィルターの開始方法

ElastiCacheは Bloom フィルターのデータ構造をサポートしており、これは要素が任意のセットのメンバーかどうかを確認するための空間効率に優れた確率的データ構造を提供します。Bloom フィルターを使用する場合、偽陽性が発生する可能性があります。つまり、要素がセットに追加されなかったにもかかわらず、フィルターは、その要素が存在すると誤って示す可能性があります。ただし、Bloom フィルターを使用すると、偽陰性 (要素がセットに追加されたにもかかわらず、その要素が存在しないという誤った表示) を防ぐことができます。

fp レートを調整することで、潜在的な偽陽性の割合をワークロードの優先レートに設定できます。容量 (Bloom フィルターが保持できる項目の数)、スケーリングおよび非スケーリングのプロパティなども構成できます。

サポートされているエンジンバージョンでクラスターを作成すると、Bloom データタイプおよび関連するコマンドが自動的に使用可能になります。bloom データ型は、valkey-pyvalkey-java、および valkey-go などの公式 Valkey クライアントライブラリの Bloom フィルターコマンド構文とは API 互換性があります。既存の Bloom ベースの Valkey および Redis OSS のアプリケーションを ElastiCache に簡単に移行できます。コマンドの完全なリストについては、「Bloom フィルターコマンド」を参照してください。

Bloom 関連のメトリクス BloomFilterBasedCmdsBloomFilterBasedCmdsLatency、および BloomFilterBasedCmdsECPUs は、このデータ型の使用状況をモニタリングするために CloudWatch に組み込まれています。詳細については、「Valkey と Redis OSS のメトリクス」を参照してください。

注記
  • Bloom フィルターを使用するには、ElastiCache Valkey 8.1 以降を実行している必要があります。

  • Bloom データ型は、Valkey ベースではない他の Bloom サービスとは RDB 互換性がありません。

Bloom フィルターのデータ型の概要

Bloom フィルターは、要素を追加したり、要素が存在するかどうかを確認したりできる、スペース効率の高い確率的データ構造です。要素が追加されなかったにもかかわらず、フィルターによって要素が存在すると誤って示される偽陽性が発生する可能性があります。ただし、ブルームフィルターは、偽陰性 (要素が追加されたにもかかわらず、要素が存在しないという誤った表示) が発生しないことを保証します。

Bloom フィルターに関するドキュメントの主なソースは、valkey.io のドキュメントページにあります。これには、次の情報が含まれます。

Bloom のサイズ制限

単一の Bloom フィルターオブジェクトによるメモリ消費量は 128 MB に制限されます。BF.INFO <key> SIZE コマンドを使用すると、Bloom フィルターによって消費されるメモリの量を確認できます。

Bloom ACL

Bloom コマンドとデータへのアクセスを簡単に管理するために、既存のデータ型ごとのカテゴリ (@string、@hash など) と同様の新しいカテゴリ @bloom が追加されました。他の既存の Valkey および Redis OSS のコマンドは @bloom カテゴリのメンバーではありません。

新しい Bloom コマンドを含めるように更新された既存の ACL カテゴリは、@read、@write、および @fast の 3 つあります。以下の表は、適切なカテゴリへの Bloom コマンドのマッピングを示しています。

Bloom コマンド @read @write @fast @bloom

BF.ADD

y

y

y

BF.CARD

y

y

y

BF.EXISTS

y

y

y

BF.INFO

y

y

y

BF.INSERT

y

y

y

BF.MADD

y

y

y

BF.MEXISTS

y

y

y

BF.RESERVE

y

y

y

Bloom フィルター関連のメトリクス

Bloom データ構造に関連する次の CloudWatch メトリクスが用意されています。

CW メトリクス 単位 サーバーレス/ノードベース 説明

BloomFilterBasedCmds

カウント

両方

読み取りコマンドと書き込みコマンドの両方を含む Bloom フィルターコマンドの合計数。

BloomFilterBasedCmdsLatency

マイクロ秒

セルフマネージド型

読み取りコマンドと書き込みコマンドの両方を含む、すべての Bloom フィルターコマンドのレイテンシー。

BloomFilterBasedCmdsECPUs

カウント

サーバーレス

読み取りコマンドと書き込みコマンドの両方を含む、すべての Bloom フィルターコマンドによって消費される ECPU。

Bloom フィルターコマンド

Bloom フィルターコマンドのドキュメントは、Valkey.io ウェブサイトにあります。各コマンドページには、構文、動作、戻り値、潜在的なエラー状態など、Bloom コマンドの包括的な概要が記載されています。

名前 説明
BF.ADD

Bloom フィルターに 1 つの項目を追加します。フィルターがまだ存在しない場合は、作成されます。

BF.CARD

Bloom フィルターのカーディナリティを返します。

BF.EXISTS

Bloom フィルターに指定された項目が含まれているかどうかを決定します。

BF.INFO

特定の Bloom フィルターの使用情報とプロパティを返します。

BF.INSERT

0 個以上の項目を持つ Bloom フィルターを作成するか、既存の Bloom フィルターに項目を追加します。

BF.MADD

Bloom フィルターに 1 つ以上の項目を追加します。

BF.MEXISTS

Bloom フィルターに 1 つ以上の項目が含まれているかどうかを決定します。

BF.RESERVE

指定されたプロパティを使用して空の Bloom フィルターを作成します。

注記

BF.LOAD は ElastiCache ではサポートされていません。これは、ElastiCache がサポートしていない AOF の使用にのみ関連します。