布隆过滤器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