USANDO BLOOM过滤器no redis(重新启动)
#编程 #dotnet #redis #dotnetcore

Bloom Filter是由Burton Howard Bloom在1970年创建的一种概率数据结构,它在很大程度上是必须存储大量数据的情况,例如CPFS和IPS被欺诈阻止。 Bloom过滤器没有访问数据库进行预约并知道是否存在特定密钥,而是让您更加皱褶,更有效地进行此检查,从而减少了操作的操作时间。要了解更多信息,请阅读Márcio Althmann的文章。

通过使用诸如cpf_bloqueio_ {cpf number}之类的键直接在REDIS上存储信息,该操作可以比数据库响应更烦人,但是数据量,但是数据卷,但存储的数据量将大。使用Bloom过滤器,可以将千兆字节数据存储在兆字节中,这使其成为优化大量数据存储的绝佳选择。 redis提供了这种结构,以不通过重新启动。

要在Redis中使用Bloom Filter,必须拥有一个£o redis,例如可以在Docker Hub中找到的Redis/redis-Server映像。获得此图像后,我们可以使用stackexchange library.redis与Bloom Filter一起使用。

REDIS中的Bloom Filter可以通过两种方式使用。前者是使用BF.Reserve命令保留必要的空间,该命令使您可以预先指定Bloom过滤器可以期望的数据量以及此数据的所需错误率,即他可以报告的No。误报。这样,Redis知道如何正确配置Bloom过滤器。

但是,如果您不想提前指定这些值,则不必为Redis保留空间。这是因为对不存在的密钥的BF.ADD命令的任何调用都会自动为您创建Bloom Filter。这种方法是,如果您不知道Bloom过滤器所需的数据或错误率是多少。

创建一个花朵过滤器:

using StackExchange.Redis;

var connection = ConnectionMultiplexer.Connect("localhost:6379");
var database = connection.GetDatabase();

// Criando um filtro
await database.ExecuteAsync("BF.RESERVE", "bf_cpf", .01, 10000);

要添加列表,只需传递预订时创建的密钥以及要添加的元素即可调用bf.add命令。 REDIS将执行元素哈希,并将其添加到Bloom Filter中。

- 重要的是要记住,Bloom Filter不允许排除元素。

将一个元素添加到Bloom过滤器:

// Adicionando um item na lista
await database.ExecuteAsync("BF.ADD", "bf_cpf", "00000000001");

要验证“ Bloom过滤器”列表中是否存在一个元素,我们使用BF.EXISTS命令,该命令接收了要验证存在的密钥名称和元素。

运行命令时,redis将再次执行元素哈希,并检查相应的位是否在过滤器中定义。如果设置了所有相应的位,则命令将返回,表明该元素可能在列表中。如果命令将返回false,则表明该元素绝对不在列表中。重要的是要记住,可能存在假阳性,Bloom过滤器中柯利沙斯的可能性已经高于其他数据结构。

检查一个元素的存在:

// Verificando se o item está na lista
var existe = await database.ExecuteAsync("BF.EXISTS", "bf_cpf", "00000000001");

Bloom Filter是一种有效地处理大量数据并优化操作性能的宝贵工具。此外,Redisbloom是基于REDIS结构的分布式列表,可为存储数据提供可扩展性和高可用性。可以使用分配资源和重复的复制来确保在失败或Disheveral超负荷的情况下数据可用性,这使得解决方案更加健壮和自信。

在©a a a近!

参考:
Using RedisBloom with .NET