开始使用 Bloom 筛选条件
ElastiCache 支持 Bloom 筛选条件数据结构,后者是一种空间利用率高的概率数据结构,可用于检查某个元素是否属于某个集合。使用 Bloom 筛选条件时,可能会出现误报,即筛选条件可能会错误地表明某个元素存在,但其实该元素并未添加到集合中。不过,使用 Bloom 筛选条件可以防止误报,即错误地表明某个元素不存在,但其实该元素已添加到集合中。
通过调整误报率,您可以将潜在误报的百分比设置为工作负载的首选比率。您还可以配置容量(Bloom 筛选条件可以容纳的项目数量)、扩展和非扩展属性等。
使用受支持的引擎版本创建集群后,Bloom 数据类型和关联的命令将自动可用。bloom 数据类型与 Valkey 官方客户端库(包括 valkey-py、valkey-java 和 valkey-go)的 Bloom 筛选命令语法具有 API 兼容性。您可以轻松地将基于 Bloom 的现有 Valkey 和 Redis OSS 应用程序迁移到 ElastiCache。有关命令的完整列表,请参阅Bloom 筛选命令。
与 Bloom 相关的指标 BloomFilterBasedCmds、BloomFilterBasedCmdsLatency 和 BloomFilterBasedCmdsECPUs 已合并到 CloudWatch 中,用于监控此数据类型的使用情况。有关更多信息,请参阅 Valkey 和 Redis OSS 的指标。
注意
要使用 Bloom 筛选条件,您必须在 ElastiCache for Valkey 8.1 及更高版本上运行。
Bloom 数据类型与其他并非基于 Valkey 的 Bloom 产品不具有 RDB 兼容性。
Bloom 筛选条件数据类型概述
Bloom 筛选条件是一种空间利用率高的概率数据结构,允许添加元素和检查元素是否存在。如果筛选条件错误地表明某个元素存在,但其实该元素并未添加,则可能会出现误报。不过,Bloom 筛选条件可以保证不出现误报(错误地表明某个元素不存在,但其实该元素已添加)。
有关 Bloom 筛选条件文档的主要来源,请参阅 valkey.io 文档页面。这包含以下信息:
-
广告/事件重复数据删除
欺诈侦测
筛除有害内容/垃圾邮件
唯一用户检测
-
如何在扩展和非扩展 Bloom 筛选条件进行选择
-
了解 Bloom 筛选条件的可调整属性。这包括误报率、容量、扩展和非扩展属性等。
-
-
有关如何检查 Bloom 筛选条件是否达到其内存使用限制以及能否扩展以达到所需容量的建议和详细信息。
-
您可以使用 BF.INFO
命令专门检查 Bloom 筛选条件文档所使用的内存量。
-
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 筛选命令
| 名称 | 描述 |
|---|---|
| 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 不支持。