Bloom 滤镜入门 - Amazon ElastiCache
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Bloom 滤镜入门

ElastiCache 支持 Bloom filter 数据结构,它提供了一种节省空间的概率数据结构来检查元素是否是集合的成员。使用 Bloom 过滤器时,可能会出现误报,即过滤器可能会错误地指示某个元素存在,即使该元素未添加到集合中。但是,使用 Bloom 过滤器可以防止误报,即错误地表明某个元素存在,即使该元素已添加到集合中。

通过调整 fp 率,您可以将潜在误报的百分比设置为工作负载的首选比率。您还可以配置容量(Bloom 过滤器可以容纳的项目数量)、缩放和非缩放属性等。

使用支持的引擎版本创建集群后,Bloom 数据类型和相关命令将自动可用。bloom数据类型与 Valkey 官方客户端库的 Bloom filter 命令语法兼容valkey-py,包括valkey-java、和valkey-go。你可以轻松地将现有的基于 Bloom 的 Valkey 和 Redis OSS 应用程序迁移到。 ElastiCache有关命令的完整列表,请参见布隆过滤器命令

与 Bloom 相关的指标BloomFilterBasedCmdsBloomFilterBasedCmdsLatency、和BloomFilterBasedCmdsECPUs, CloudWatch 用于监控此数据类型的使用情况。有关更多信息,请参阅 Valkey 和 Redis OSS 的指标

注意
  • 要使用 Bloom 过滤器,你必须在 ElastiCache Valkey 8.1 及更高版本上运行。

  • Bloom 数据类型不兼容 RDB 与其他基于 Valkey 的非基于 Valkey 的布隆产品。

布隆过滤器数据类型概述

Bloom filters 是一种节省空间的概率数据结构,允许添加元素和检查元素是否存在。如果过滤器错误地指示某个元素存在,即使该元素未被添加,也可能出现误报。但是,Bloom Filters 保证不会出现假阴性(错误地表示元素不存在,即使已添加该元素)。

布隆过滤器的主要文档来源可以在 valkey.io 文档页面上找到。其中包含以下信息:

花朵大小限制

单个 Bloom 过滤器对象消耗的内存限制为 128 MB。您可以使用BF.INFO <key> SIZE命令检查 Bloom 过滤器消耗的内存量。

绽放 ACLs

与现有的每种数据类型类别(@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.EXIST

y

y

y

BF.INFO

y

y

y

BF.INSERT

y

y

y

BF.MADD

y

y

y

BF.MEXISTS

y

y

y

BF.RESERV

y

y

y

与布隆过滤器相关的指标

提供了以下与 bloom 数据结构相关的 CloudWatch 指标:

CW 指标 单位 无服务器/自行设计 描述

BloomFilterBasedCmds

计数

二者

Bloom 过滤器命令的总数,包括读取和写入命令。

BloomFilterBasedCmdsLatency

微秒

自行管理

所有 Bloom 过滤器命令的延迟,包括读取和写入命令。

BloomFilterBasedCmdsECPUs

计数

无服务器

ECPUs 由所有 Bloom 过滤器命令消耗,包括读取和写入命令。

布隆过滤器命令

Bloom Filter 命令记录在 Valkey.io 网站上。每个命令页面都全面概述了 bloom 命令,包括其语法、行为、返回值和潜在的错误条件。

名称 描述
BF.ADD

向布隆过滤器中添加单个项目。如果该过滤器尚不存在,则将其创建。

BF.card

返回布隆过滤器的基数。

BF.EISTS

确定布隆过滤器是否包含指定项目。

BF.INFO

返回特定布隆过滤器的使用信息和属性。

BF.INSERT

创建包含 0 个或更多项目的布隆过滤器,或者向现有的布隆过滤器中添加项目。

BF.MADD

向布隆过滤器中添加一个或多个项目。

BF.MEXISTS

确定布隆过滤器是否包含 1 个或多个项目。

BF.RESERV

创建一个具有指定属性的空布隆过滤器。

注意

不支持 BF.LOAD。 ElastiCache它仅与 AOF 的使用有关,后者 ElastiCache 不支持。