

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Bloom 篩選條件入門
<a name="BloomFilters"></a>

ElastiCache 支援 Bloom 篩選條件資料結構，可提供空間效率高的概率資料結構，以檢查 元素是否為集合的成員。使用 Bloom 篩選條件時，可能會產生誤報 - 篩選條件可能會錯誤地指出 元素存在，即使該元素未新增至集合。不過，使用 Bloom 篩選條件可以防止誤*判*，不正確地指出 元素*不存在*，即使該元素已新增至集合。

您可以透過調整 fp 速率，將潛在的誤報百分比設定為工作負載的偏好速率。您也可以設定容量 (Bloom 篩選條件可以容納的項目數量）、擴展和非擴展屬性等。

使用支援的引擎版本建立叢集後，Bloom 資料類型和相關聯的命令會自動可用。`bloom` 資料類型與官方 Valkey 用戶端程式庫的 Bloom filter 命令語法相容，包括 `valkey-py`、 `valkey-java`和 `valkey-go`。您可以輕鬆將現有的 Bloom 型 Valkey 和 Redis OSS 應用程式遷移至 ElastiCache。如需命令的完整清單，請參閱 [Bloom 篩選條件命令](#SupportedCommandsBloom)。

Bloom 相關指標 `BloomFilterBasedCmds`、 `BloomFilterBasedCmdsLatency`和 `BloomFilterBasedCmdsECPUs` 會併入 CloudWatch，以監控此資料類型的使用情況。如需詳細資訊，請參閱[Valkey 和 Redis OSS 的指標](CacheMetrics.Redis.md)。

**注意**  
若要使用 Bloom 篩選條件，您必須在 ElastiCache Valkey 8.1 和更新版本上執行。
Bloom 資料類型與其他非 Valkey 型 Bloom 產品不相容。

## Bloom 篩選條件資料類型概觀
<a name="BloomFilters.datatype"></a>

Bloom 篩選條件是一種空間高效的概率資料結構，允許新增元素並檢查元素是否存在。如果篩選條件不正確地指出存在 元素，即使未新增元素，也可能出現誤報。不過，Bloom Filters 保證不會發生偽陰性 （不正確地指出元素不存在，即使已新增）。

如需 Bloom 篩選條件的主要文件來源，請參閱 https：//valkey.io 文件頁面。這包含下列資訊：
+ [Bloom 篩選條件的常見使用案例](https://valkey.io/topics/bloomfilters/#common-use-cases-for-bloom-filters)
  + 廣告/事件重複資料刪除
  + 詐騙偵測
  + 篩選有害內容/垃圾郵件
  + 唯一使用者偵測
+ [擴展和非擴展光暈篩選條件之間的差異](https://valkey.io/topics/bloomfilters/#scaling-and-non-scaling-bloom-filters)
  + 如何在擴展和非擴展 Bloom 篩選條件之間做出決定
+ [Bloom 屬性](https://valkey.io/topics/bloomfilters/#bloom-properties)
  + 了解 Bloom 篩選條件的可調校屬性。這包括誤報率、容量、擴展和非擴展屬性等。
+ [Bloom 命令的效能](https://valkey.io/topics/bloomfilters/#performance)
+ [監控整體 Bloom 篩選條件統計資料](https://valkey.io/topics/bloomfilters/#monitoring)
+ [處理大型光暈篩選條件](https://valkey.io/topics/bloomfilters/#handling-large-bloom-filters)
  + 如何檢查 Bloom 篩選條件是否達到其記憶體用量限制，以及是否可以擴展以達到所需容量的建議和詳細資訊。
  + 您可以使用 [BF.INFO](https://valkey.io/commands/bf.info/) 命令，透過 特別檢查花粉篩選條件文件消耗的記憶體量。

## Bloom 大小限制
<a name="BloomFilters.size"></a>

單一 Bloom 篩選條件物件的記憶體使用量限制為 128 MB。您可以使用 `BF.INFO <key> SIZE`命令，檢查 Bloom 篩選條件耗用的記憶體量。

## Bloom ACLs
<a name="BloomFilters.ACL"></a>

與現有的每個資料類型類別 (@string、@hash 等） 類似，新增了新類別 @bloom，以簡化對 Bloom 命令和資料的管理存取。沒有其他現有的 Valkey 或 Redis OSS 命令是 @bloom 類別的成員。

有 3 個現有的 ACL 類別已更新為包含新的 Bloom 命令：@read、@write 和 @fast。下表指出 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 篩選條件相關指標
<a name="BloomFilters.Metrics"></a>

提供與 Bloom 資料結構相關的下列 CloudWatch 指標：


| CW 指標 | 單位 | 無伺服器/節點型 | Description | 
| --- | --- | --- | --- | 
| BloomFilterBasedCmds | 計數 | 兩者 | Bloom 篩選條件命令的總數，包括讀取和寫入命令。 | 
| BloomFilterBasedCmdsLatency | 微秒 | 自我管理 | 所有 Bloom 篩選條件命令的延遲，包括讀取和寫入命令。 | 
| BloomFilterBasedCmdsECPUs | 計數 | 無伺服器 | 所有 Bloom 篩選條件命令使用的 ECPUs，包括讀取和寫入命令。 | 

## Bloom 篩選條件命令
<a name="SupportedCommandsBloom"></a>

[Bloom Filter 命令](https://valkey.io/commands/#bloom)會記錄在 [Valkey.io](https://valkey.io/) 網站上。每個命令頁面都提供 Bloom 命令的完整概觀，包括其語法、行為、傳回值和潛在的錯誤條件。


| 名稱 | 描述 | 
| --- | --- | 
| [BF.ADD](https://valkey.io/commands/bf.add/) | 將單一項目新增至 Bloom 篩選條件。如果篩選條件不存在，則會建立。 | 
| [BF.CARD](https://valkey.io/commands/bf.card/) | 傳回 Bloom 篩選條件的基數。 | 
| [BF.EXISTS](https://valkey.io/commands/bf.exists/) | 決定 Bloom 篩選條件是否包含指定的項目。 | 
| [BF.INFO](https://valkey.io/commands/bf.info/) | 傳回特定 Bloom 篩選條件的用量資訊和屬性。 | 
| [BF.INSERT](https://valkey.io/commands/bf.insert/) | 建立具有 0 個或更多項目的花粉篩選條件，或將項目新增至現有的花粉篩選條件。 | 
| [BF.MADD](https://valkey.io/commands/bf.madd/) | 將一或多個項目新增至花粉篩選條件。 | 
| [BF.MEXISTS](https://valkey.io/commands/bf.mexists/) | 決定 Bloom 篩選條件是否包含 1 個或多個項目。 | 
| [BF.RESERVE](https://valkey.io/commands/bf.reserve/) | 建立具有指定屬性的空花篩選條件。 | 

**注意**  
ElastiCache 不支援 **BF.LOAD**。它僅適用於 ElastiCache 不支援的 AOF 用量。