本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 相关的指标BloomFilterBasedCmds
BloomFilterBasedCmdsLatency
、和BloomFilterBasedCmdsECPUs
, CloudWatch 用于监控此数据类型的使用情况。有关更多信息,请参阅 Valkey 和 Redis OSS 的指标。
注意
要使用 Bloom 过滤器,你必须在 ElastiCache Valkey 8.1 及更高版本上运行。
Bloom 数据类型不兼容 RDB 与其他基于 Valkey 的非基于 Valkey 的布隆产品。
布隆过滤器数据类型概述
Bloom filters 是一种节省空间的概率数据结构,允许添加元素和检查元素是否存在。如果过滤器错误地指示某个元素存在,即使该元素未被添加,也可能出现误报。但是,Bloom Filters 保证不会出现假阴性(错误地表示元素不存在,即使已添加该元素)。
布隆过滤器的主要文档来源可以在 valkey.io 文档页面上找到。其中包含以下信息:
-
广告/事件重复数据删除
欺诈侦测
过滤有害内容/垃圾邮件
独特的用户检测
-
如何在缩放和非缩放布隆过滤器之间做出选择
-
了解 Bloom 滤镜的可调特性。这包括误报率、容量、缩放和非缩放属性等。
-
-
有关如何检查布隆过滤器是否已达到其内存使用限制以及是否可以扩展以达到所需容量的建议和详细信息。
-
您可以使用 BF.INFO
命令专门检查布隆过滤器文档消耗的内存量。
-
花朵大小限制
单个 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 命令
注意
不支持 BF.LOAD。 ElastiCache它仅与 AOF 的使用有关,后者 ElastiCache 不支持。