开始使用 Bloom 筛选条件 - Amazon ElastiCache

开始使用 Bloom 筛选条件

ElastiCache 支持 Bloom 筛选条件数据结构,后者是一种空间利用率高的概率数据结构,可用于检查某个元素是否属于某个集合。使用 Bloom 筛选条件时,可能会出现误报,即筛选条件可能会错误地表明某个元素存在,但其实该元素并未添加到集合中。不过,使用 Bloom 筛选条件可以防止误报,即错误地表明某个元素存在,但其实该元素已添加到集合中。

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

使用受支持的引擎版本创建集群后,Bloom 数据类型和关联的命令将自动可用。bloom 数据类型与 Valkey 官方客户端库(包括 valkey-pyvalkey-javavalkey-go)的 Bloom 筛选命令语法具有 API 兼容性。您可以轻松地将基于 Bloom 的现有 Valkey 和 Redis OSS 应用程序迁移到 ElastiCache。有关命令的完整列表,请参阅Bloom 筛选命令

与 Bloom 相关的指标 BloomFilterBasedCmdsBloomFilterBasedCmdsLatencyBloomFilterBasedCmdsECPUs 已合并到 CloudWatch 中,用于监控此数据类型的使用情况。有关更多信息,请参阅 Valkey 和 Redis OSS 的指标

注意
  • 要使用 Bloom 筛选条件,您必须在 ElastiCache for Valkey 8.1 及更高版本上运行。

  • Bloom 数据类型与其他并非基于 Valkey 的 Bloom 产品不具有 RDB 兼容性。

Bloom 筛选条件数据类型概述

Bloom 筛选条件是一种空间利用率高的概率数据结构,允许添加元素和检查元素是否存在。如果筛选条件错误地表明某个元素存在,但其实该元素并未添加,则可能会出现误报。不过,Bloom 筛选条件可以保证不出现误报(错误地表明某个元素不存在,但其实该元素已添加)。

有关 Bloom 筛选条件文档的主要来源,请参阅 valkey.io 文档页面。这包含以下信息:

Bloom 大小限制

单个 Bloom 筛选条件对象的内存使用上限为 128 MB。您可以使用 BF.INFO <key> SIZE 命令检查 Bloom 筛选条件所使用的内存量。

Bloom ACL

与现有的每数据类型类别(@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 筛选条件相关指标

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

CW 指标 单位 无服务器/基于节点 描述

BloomFilterBasedCmds

计数

二者

Bloom 筛选命令的总数,包括读取和写入命令。

BloomFilterBasedCmdsLatency

微秒

自行管理

所有 Bloom 筛选命令的延迟,包括读取和写入命令。

BloomFilterBasedCmdsECPUs

计数

无服务器

所有 Bloom 筛选命令使用的 ECPU 数,包括读取和写入命令。

Bloom 筛选命令

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

名称 描述
BF.ADD

向 Bloom 筛选条件添加单个项目。如果该筛选条件尚不存在,则将创建。

BF.CARD

返回 Bloom 筛选条件的基数。

BF.EXISTS

确定 Bloom 筛选条件是否包含指定项目。

BF.INFO

返回特定 Bloom 筛选条件的使用信息和属性。

BF.INSERT

创建包含 0 个或更多项目的 Bloom 筛选条件,或者向现有 Bloom 筛选条件添加项目。

BF.MADD

向 Bloom 筛选条件添加一个或多个项目。

BF.MEXISTS

确定 Bloom 筛选条件是否包含 1 个或多个项目。

BF.RESERVE

创建一个具有指定属性的空 Bloom 筛选条件。

注意

BF.LOAD 不受 ElastiCache 支持。仅与 AOF 使用有关,而 ElastiCache 不支持。