布隆过滤器bloomfilter浅析

编程

如果一个新闻客户端,不断的给用户推荐新闻,推荐需要去重并且还要高效。redis中的hyperloglogs可以实现实时推送并快速去重,但是每个用户都应该有个记录,时间一长数据量就会非常的大,如果用户量也很大,这个时候就可以使用布隆过滤器bloomfilter。

bloomfilter本身是一个二进制的向量,存放的就是0,1。利用位数的0或者1,代表是否存在。

布隆过滤器的特点

  • 精度是取决于bloom的存储大小的的,如果长度越大,精度就越高

  • 只能判断数据是否一定不存在,而无法判断数据是否一定存在

  • bloom的存储节点不能删除,一旦删除就影响其他节点数据的特征了

  • 布隆过滤器存储的节点数据一定是历史数据

Redis官方提供的布隆过滤器支持的是到了Redis4.x以后提供的插件功能

在redis客户端,可以不断添加到同一个key:  bf.madd users value1 value2;

布隆过滤器的使用总结

  • 布隆过滤器如果初始值过大会占用较大空间,过小会误差率高,使用前估计好元素数量

  • error_rate越小,占用空间就越大

  • 只能判断数据是否一定不存在,而无法判断数据是否一定存在

  • 可以节省90%的存储空间

  • 但匹配精度会有一点不准确(涉及空间和时间的转换:0.01%)

  • 布隆过滤器只能add和exists不能delete

 

 

 

以上是 布隆过滤器bloomfilter浅析 的全部内容, 来源链接: utcz.com/z/516761.html

回到顶部