7. [series] Redis Redis de aplicaciones avanzadas - filtro Bloom

Original: 7. [series] Redis Redis de aplicaciones avanzadas - filtro Bloom

Tome los titulares de hoy, que continuará a recomendar nuestra nueva noticia, cada recomendación debe ser el filtro de énfasis de lo que hemos visto antes, los titulares de hoy en día cómo volver a hacerlo, a pesar de lo que podamos por encima de HyperLogLog de-énfasis, pero no hay manera de confirmar esta noticia no se ha accedido, de ninguna manera pfcontains. ¿Hay una solución mejor?

Redis para nosotros para preparar el filtro Bloom está diseñado para resolver este problema es ir pesada, que desempeña al mismo tiempo la función de énfasis, el espacio también puede ahorrar el 90%, sólo ligeramente una cierta tasa de falsos positivos.

¿Cuál es el filtro Bloom

filtro Bloom puede ser entendida como una estructura de conjunto ligeramente impreciso, cuando se utiliza el método contiene decidir si un objeto está presente, puede ser falsa, pero no particularmente filtro Bloom no es exacta, siempre que los ajustes de los parámetros razonables, no puede ser controlada dentro de un intervalo de error.

Cuando el filtro Bloom digamos que hay un valor que no puede existir, cuando se dice que hay, no debe existir. Dicho esto, cuando conoces a alguien, no se puede saber, cuando se dice saber, hay que no saben. El anterior conjunto de escenarios de uso, filtro Bloom puede filtrar el contenido exacto de los que ya se ha visto, los que no han leído también puede filtrar una parte, por lo que podemos asegurar que no se han examinado las recomendaciones para el usuario.

Bloom filtro Redis

filtro Redis4.0 Bloom se proporciona en forma de plug-ins

uso básico

filtro Bloom tiene dos instrucciones básicas, elementos add bf.add, bf.exists existe el elemento de consulta, bf.add aceptar sólo un elemento, si desea insertar más, se utiliza, la instrucción bf.madd, si determinar si existe una pluralidad de elementos, se puede utilizar para comprobar bf.mexists.

127.0.0.1:6379> bf.add codehole user1
(integer) 1
127.0.0.1:6379> bf.add codehole user2
(integer) 1
127.0.0.1:6379> bf.add codehole user3
(integer) 1
127.0.0.1:6379> bf.exists codehole user1
(integer) 1
127.0.0.1:6379> bf.exists codehole user2
(integer) 1
127.0.0.1:6379> bf.exists codehole user3
(integer) 1
127.0.0.1:6379> bf.exists codehole user4
(integer) 0
127.0.0.1:6379> bf.madd codehole user4 user5 user6
1) (integer) 1
2) (integer) 1
3) (integer) 1
127.0.0.1:6379> bf.mexists codehole user4 user5 user6 user7
1) (integer) 1
2) (integer) 1
3) (integer) 1
4) (integer) 0

Los parámetros personalizados

filtro Bloom se crea automáticamente cuando los parámetros por defecto agregar, Redis también proporciona parámetros personalizados método de ajuste, tenemos que utilizar antes de agregar, instrucciones bf.reserve creados explícitamente, si ha creado se informa de un error. Hay tres parámetros personalizados, llave, menor error_rate y initial_size, tasa de errores, mayor es el espacio utilizado, initial_size se espera para poner el tamaño del elemento, cuando se supera el tamaño real, la tasa de error se elevará.

parámetros por defecto Redis se proporcionan por defecto error_rate initial_size 0,01 100

principio filtro Bloom

Aprender los conceptos básicos del uso, echemos un vistazo a su principio de ejecución.

Cada filtro Bloom es en realidad un gran conjunto de bits y de hash imparcial. Cuando add, utiliza una pluralidad de función hash a la clave hash calculado para un valor de índice entero para los elementos de matriz de bits para obtener una posición operación de módulo, cada uno de la función hash se puede calcular en diferentes posiciones, estos son todos de conjunto en varios lugares 1.

Supongo que te gusta

Origin www.cnblogs.com/lonelyxmas/p/12515049.html
Recomendado
Clasificación