拿个offer - 开源&项目实战 拿个offer - 开源&项目实战
首页
后端技术
🚀大话面试
  • 校&社招实战项目

    • 12306(铁路购票平台)
    • 短链接(Sass平台)
  • 社招进阶项目

    • 刚果商城(DDD领域驱动)
  • 基础架构项目

    • 幂等基础组件(支持接口及多种MQ)
    • 企业基础架构组件库
  • 校&社招实战项目

    • 12306(铁路购票平台) (opens new window)
    • 短链接(Sass平台) (opens new window)
  • 社招进阶项目

    • 刚果商城(DDD领域驱动) (opens new window)
加入群聊
🔋知识星球
代码仓库 (opens new window)
首页
后端技术
🚀大话面试
  • 校&社招实战项目

    • 12306(铁路购票平台)
    • 短链接(Sass平台)
  • 社招进阶项目

    • 刚果商城(DDD领域驱动)
  • 基础架构项目

    • 幂等基础组件(支持接口及多种MQ)
    • 企业基础架构组件库
  • 校&社招实战项目

    • 12306(铁路购票平台) (opens new window)
    • 短链接(Sass平台) (opens new window)
  • 社招进阶项目

    • 刚果商城(DDD领域驱动) (opens new window)
加入群聊
🔋知识星球
代码仓库 (opens new window)
  • 小册简介

    • 什么是大话面试
  • Redis

    • Redis为什么这么快?
    • Redis宕机数据会丢失么?
    • Redis的AOF是怎么实现的?
    • Redis的RDB是怎么实现的?
    • Redis如何实现到期删除的?
    • Redis常用内存淘汰策略?
    • Redis字符串底层数据结构?
    • Redis的压缩列表是什么?
    • Redis的跳表是什么?
    • Redis的ZSet底层是怎么实现的?
    • 什么是布隆过滤器?
    • 布隆过滤器容量如何评估?
      • 回答话术
        • 1. 容量参数
        • 2. 误判率参数
        • 3. 真实案例
    • 布隆过滤器容量不够用如何解决?
    • Redis节点CPU核数越高越好?
    • 为什么Redis不适合海量请求?
    • Redis如何应对海量请求?
    • 如何提升Redis批量访问性能?
  • 缓存

    • 如何解决缓存击穿?
    • 如何解决缓存穿透?
    • 如何解决缓存雪崩?
    • 如何解决大Key问题?
    • 缓存如何预热?
    • 如何发现缓存中热Key?
    • 如何解决热Key问题?
    • 缓存与数据库一致性?
    • 先写DB再删除缓存解决一致性?
    • Binlog配合MQ如何解决一致性?
目录

布隆过滤器容量如何评估?

# 回答话术

创建布隆过滤器时有两个核心参数,一个是布隆过滤器的容量,另一个是误判率。

# 1. 容量参数

布隆过滤器的容量取决于系统数量需求。以用户名全局唯一不能重复功能举例,我们需要把已经注册的用户名放到布隆过滤器中,这样就可以直接通过布隆过滤器来判断用户名是否存在,而不需要和数据库交互。

在这种场景下,布隆过滤器的容量就取决于系统的用户数量,这需要产品去评估系统已有用户的数量,以及未来很长一段时间的增长量,得出一个经验值,然后设置为布隆过滤器的容量。

建议可以适当设置大一些,不然的话,当用户数量接近布隆过滤器容量时,会出现较大可能性误判问题。当然也不能设置太大,会造成一定空间的浪费。最终设置的值需要在误判和空间之间做一个取舍。

# 2. 误判率参数

误判率参数,意味着布隆过滤器判断某个元素存在时的错误概率。误判率越低,通常需要更大的位数组容量以及新增和查询元素时性能的降低。布隆过滤器增加和查询元素的时间复杂为 O(N),N 取自于布隆过滤器的 Hash 函数数量,误判率越低,就需要更多复杂的 Hash 函数,那新增和查询操作时自然就会变慢。

# 3. 真实案例

如果初始化一个 1 亿元素误判率在千分之一的布隆过滤器,大概占据内存 171M 左右。

另外在对布隆过滤器进行初始化的时候,会一次性申请对应的内存,这个需要额外注意下,避免初始化超大容量布隆过滤器时内存不足问题。

上次更新: 2023/11/06, 23:14:13
什么是布隆过滤器?
布隆过滤器容量不够用如何解决?

← 什么是布隆过滤器? 布隆过滤器容量不够用如何解决?→

Theme by Vdoing | Copyright © 2022-2023 马丁玩编程 | Apache2 License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式