[ Redis16篇]BitMap布隆过滤器

1.什么是布隆过滤器

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

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

实现原理:
布隆过滤器是一个 bit 向量或者说 bit 数组,长这样:
[ Redis16篇]BitMap布隆过滤器

2.使用场景

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

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

3.存储什么样的数据 ?

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

上一篇:基于兆易创新GD32F450IK芯片的流水灯程序,详解,对入门童鞋友好的讲解


下一篇:分库分表之后,id唯一主键如何生成