Bloom フィルターの開始方法
ElastiCacheは Bloom フィルターのデータ構造をサポートしており、これは要素が任意のセットのメンバーかどうかを確認するための空間効率に優れた確率的データ構造を提供します。Bloom フィルターを使用する場合、偽陽性が発生する可能性があります。つまり、要素がセットに追加されなかったにもかかわらず、フィルターは、その要素が存在すると誤って示す可能性があります。ただし、Bloom フィルターを使用すると、偽陰性 (要素がセットに追加されたにもかかわらず、その要素が存在しないという誤った表示) を防ぐことができます。
fp レートを調整することで、潜在的な偽陽性の割合をワークロードの優先レートに設定できます。容量 (Bloom フィルターが保持できる項目の数)、スケーリングおよび非スケーリングのプロパティなども構成できます。
サポートされているエンジンバージョンでクラスターを作成すると、Bloom データタイプおよび関連するコマンドが自動的に使用可能になります。bloom データ型は、valkey-py、valkey-java、および valkey-go などの公式 Valkey クライアントライブラリの Bloom フィルターコマンド構文とは API 互換性があります。既存の Bloom ベースの Valkey および Redis OSS のアプリケーションを ElastiCache に簡単に移行できます。コマンドの完全なリストについては、「Bloom フィルターコマンド」を参照してください。
Bloom 関連のメトリクス BloomFilterBasedCmds、BloomFilterBasedCmdsLatency、および BloomFilterBasedCmdsECPUs は、このデータ型の使用状況をモニタリングするために CloudWatch に組み込まれています。詳細については、「Valkey と Redis OSS のメトリクス」を参照してください。
注記
Bloom フィルターを使用するには、ElastiCache Valkey 8.1 以降を実行している必要があります。
Bloom データ型は、Valkey ベースではない他の Bloom サービスとは RDB 互換性がありません。
Bloom フィルターのデータ型の概要
Bloom フィルターは、要素を追加したり、要素が存在するかどうかを確認したりできる、スペース効率の高い確率的データ構造です。要素が追加されなかったにもかかわらず、フィルターによって要素が存在すると誤って示される偽陽性が発生する可能性があります。ただし、ブルームフィルターは、偽陰性 (要素が追加されたにもかかわらず、要素が存在しないという誤った表示) が発生しないことを保証します。
Bloom フィルターに関するドキュメントの主なソースは、valkey.io のドキュメントページにあります。これには、次の情報が含まれます。
-
広告/イベントの重複排除
不正検出
有害なコンテンツ/スパムのフィルタリング
一意のユーザーの検出
-
スケーリングと非スケーリングの Bloom フィルターを判断する方法
-
Bloom フィルターの調整可能なプロパティについて説明します。これには、偽陽性率、容量、スケーリングと非スケーリングのプロパティなどが含まれます。
-
-
Bloom フィルターがメモリ使用量の制限に達しているかどうか、また必要な容量に達するまで拡張できるかどうかを確認する方法に関する推奨事項と詳細。
-
BF.INFO
コマンドを使用すると、Bloom フィルタードキュメントによって消費されるメモリの量を具体的に確認できます。
-
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 フィルターコマンド
| 名前 | 説明 |
|---|---|
| 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 の使用にのみ関連します。