Redis教程

[ Redis16篇]BitMap布隆过滤器

本文主要是介绍[ Redis16篇]BitMap布隆过滤器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.什么是布隆过滤器

本质上布隆过滤器是一种数据结构,特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”

相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,
但是缺点是其返回的结果是概率性的,而不是确切的。

实现原理:
布隆过滤器是一个 bit 向量或者说 bit 数组,长这样:
在这里插入图片描述

2.使用场景

  • 解决数据库缓存击穿(比如受到攻击服务器时,会构建大量不存在于缓存中的key向服务器发起请求,在数据量足够大的时候,频繁的数据库查询会导致宕机);
  • 去重(比如:爬给定网址的时候对已经爬取过的URL去重);
  • 文章是否已读 (比如:新闻推荐系统)
  • 邮箱的垃圾邮件过滤、黑名单等;

综上都是基于判断集合中元素是否存在使用的。

3.存储什么样的数据 ?

存储每个元素只能是 0 或者 1,每个元素都只占用 1 bit 。
比如:一个100万的位数组占用大小应为
1000000Bit / 8 = 125000 Byte = 125000/1024 kb ≈ 122kb

这篇关于[ Redis16篇]BitMap布隆过滤器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!