Introducción a los filtros de Bloom
ElastiCache admite la estructura de datos de filtros de Bloom, que es una estructura de datos de probabilidad y eficiente en términos de espacio que se utiliza para comprobar si un elemento es miembro de un conjunto. Cuando se utilizan filtros de Bloom, es posible que se generen falsos positivos: un filtro puede indicar incorrectamente la existencia de un elemento, aunque ese elemento no se haya añadido al conjunto. Sin embargo, el uso de los filtros de Bloom evitará los falsos negativos, es decir, indicaciones incorrectas de que un elemento no existe aunque se haya añadido al conjunto.
Puede establecer el porcentaje de posibles falsos positivos en la ratio que prefiera para la carga de trabajo ajustando la ratio de fp. También puede configurar la capacidad (la cantidad de elementos que puede contener un filtro de Bloom), las propiedades escalables y no escalables, y mucho más.
Después de crear un clúster con una versión de motor compatible, el tipo de datos Bloom y los comandos asociados están disponibles de forma automática. El tipo de datos bloom es compatible con las API con la sintaxis de comandos del filtro de Bloom de las bibliotecas de cliente oficiales de Valkey, incluidas valkey-py, valkey-java y valkey-go. Puede migrar fácilmente las aplicaciones de Valkey y Redis OSS basadas en Bloom existentes a ElastiCache. Para obtener una lista completa de los comandos, consulte Comandos de filtros de Bloom.
Las métricas relacionadas con Bloom BloomFilterBasedCmds, BloomFilterBasedCmdsLatency y BloomFilterBasedCmdsECPUs se incorporan a CloudWatch para supervisar el uso de este tipo de datos. Para obtener más información, consulte Métricas de Valkey y Redis OSS.
nota
Para usar los filtros de Bloom, debe ejecutar ElastiCache Valkey 8.1 y versiones posteriores.
El tipo de datos Bloom no es compatible con RDB con otras ofertas de Bloom que no estén basadas en Valkey.
Información general del tipo de datos Bloom
Los filtros de Bloom son una estructura de datos probabilística que ahorra espacio y que permite añadir elementos y comprobar si existen elementos. Pueden darse falsos positivos si un filtro indica incorrectamente que un elemento existe, aunque no se haya añadido. Sin embargo, los filtros de Bloom garantizan que no se produzcan falsos negativos (lo que indica incorrectamente que un elemento no existe aunque se haya añadido).
La principal fuente de documentación de los filtros de Bloom está en la página de documentación de valkey.io. Aquí se incluye la siguiente información:
Casos de uso habituales de los filtros de Bloom
Desduplicación de anuncios o eventos
Detección de fraudes
Filtrado de contenido nocivo o spam
Detección única de usuarios
Diferencias entre los filtros de Bloom escalables y no escalables
Cómo decidirse entre los filtros de Bloom escalables y no escalables
-
Obtenga información sobre las propiedades ajustables de los filtros de Bloom. Esto incluye la ratio de falsos positivos, la capacidad, las propiedades de escalado y no escalado, y mucho más.
Supervisión de las estadísticas generales de los filtros de Bloom
Gestión de filtros de Bloom de gran tamaño
-
Recomendaciones y detalles sobre cómo comprobar si un filtro de Bloom está alcanzando su límite de uso de memoria y si puede escalarse para alcanzar la capacidad deseada.
-
Puede comprobar la cantidad de memoria que consume un documento de filtro de Bloom mediante el uso del comando BF.INFO
.
-
Límite del tamaño de Bloom
El consumo de memoria de un único objeto de filtro de Bloom está limitado a 128 MB. Puede comprobar la cantidad de memoria que consume un filtro de Bloom mediante el uso del comando BF.INFO <key> SIZE.
ACL de Bloom
De forma similar a las categorías existentes por tipo de datos (@string, @hash, etc.), se añade una nueva categoría @bloom para simplificar la administración del acceso a los comandos y datos de Bloom. Ningún otro comando de Valkey o Redis OSS existente es miembro de la categoría @bloom.
Existen tres categorías de ACL que se actualizan para incluir los nuevos comandos de Bloom: @read, @write y @fast. La siguiente tabla indica la asignación de los comandos de Bloom a las categorías apropiadas.
| Comando de 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 |
Métricas relacionadas con el filtro de Bloom
Se proporcionan las siguientes métricas de CloudWatch relacionadas con las estructuras de datos de Bloom:
| Métricas de CW | Unidad | Sin servidor/basado en nodos | Descripción |
|---|---|---|---|
|
BloomFilterBasedCmds |
Recuento |
Ambos |
Número total de comandos de Bloom, incluidos los comandos de lectura y escritura. |
|
BloomFilterBasedCmdsLatency |
Microsegundos |
Autoadministrado |
Latencia de todos los comandos de filtros de Bloom, incluidos los comandos de lectura y escritura. |
|
BloomFilterBasedCmdsECPUs |
Recuento |
Sin servidor |
ECPU consumidas por todos los comandos de filtros de Bloom, incluidos los comandos de lectura y escritura. |
Comandos de filtros de Bloom
Los comandos de filtros de Bloom
| Nombre | Descripción |
|---|---|
| BF.ADD |
Añade un único elemento a un filtro de Bloom. Si el filtro aún no existe, se crea. |
| BF.CARD |
Devuelve la cardinalidad de un filtro de Bloom. |
| BF.EXISTS |
Determina si el filtro de Bloom contiene el elemento especificado. |
| BF.INFO |
Devuelve la información de uso y las propiedades de un filtro de Bloom específico. |
| BF.INSERT |
Crea un filtro de Bloom con cero o más elementos, o añade elementos a un filtro de Bloom existente. |
| BF.MADD |
Añade uno o más elementos a un filtro de Bloom. |
| BF.MEXISTS |
Determina si el filtro de Bloom contiene uno o más elementos. |
| BF.RESERVE |
Crea un filtro de Bloom vacío con las propiedades especificadas. |
nota
ElastiCache no admite BF.LOAD. Solo es relevante para el uso de AOF, que ElastiCache no admite.