news 2026/2/10 21:22:42

这三种过滤器在缓存系统、风控系统、数据库系统中的具体选型标准

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
这三种过滤器在缓存系统、风控系统、数据库系统中的具体选型标准

三类过滤器选型标准总览

  • 标准布隆过滤器(BF):空间效率极高、实现简单、只读场景优势明显;但不支持删除、查询为O(k)。适合“一次加载、长期只读”的白名单/黑名单与穿透防护。
  • 计数布隆过滤器(CBF):在 BF 基础上用计数器替代位,支持删除与计数;代价是空间通常放大到3–4 倍,需关注计数溢出与重建策略。适合“频繁增删/需要过期回滚”的缓存与风控条目。
  • 布谷鸟过滤器(CF):支持删除、查询通常O(1)(检查两个桶),同误判率下空间更省;实现复杂,装载因子高时插入可能退化,需要扩容/踢出策略。适合“高吞吐、低延迟、强动态”的分布式判重与风控。

缓存系统选型标准

  • 读多写少、集合相对稳定(如热点数据白名单)
    • 选型:标准 BF优先(如 Guava),或分布式RedisBloom BF
    • 理由:极致省内存、部署简单、对“穿透到 DB”的拦截效果稳定;容忍少量假阳性,二次回源校验兜底。
  • 频繁变更/有过期与回滚(如商品上下架、会话/令牌管理)
    • 选型:CBF(单机/嵌入)或CF(分布式)。
    • 理由:需要安全删除快速查询;CF 查询路径更短,CBF 改造成本更低。配合“空值短期缓存”减少穿透与抖动。
  • 分布式一致性要求高、横向扩展
    • 选型:Redis 模块 RedisBloom(BF/CF)Redisson RBloomFilter
    • 理由:统一在 Redis 层拦截无效请求,避免穿透;CF 在热点 key 场景下查询更稳。

风控系统选型标准

  • 规则集合更新频繁(IP/设备/账号黑名单实时增删)
    • 选型:CF 优先,其次CBF
    • 理由:需要实时删除低延迟判定;CF 支持删除且查询通常O(1);CBF 实现简单、迁移成本低。
  • 历史回溯/审计不可丢失(需计数与可追溯)
    • 选型:CBF(计数能力天然匹配“命中次数/窗口计数”)。
    • 理由:可在过滤器侧做频次统计/衰减,避免额外存储与多次回源。
  • 严格零误判或需枚举集合(如合规白名单)
    • 选型:精确结构(HashSet/Redis Set/Trie)或“BF + 二次精确校验”。
    • 理由:BF/CF/CBF 均为概率型,存在假阳性;风控关键路径需最终落库或缓存精确命中确认。

数据库系统选型标准

  • 索引前置过滤(减少磁盘/引擎 IO)
    • 选型:BF放在查询前置层(如服务内存或 Redis)。
    • 理由:在HBase/Cassandra/LevelDB等系统中广泛用于“是否存在”的先行判断,显著降低无效扫描与 IO。
  • 写入/删除频繁、列值集合动态变化(如倒排/存在性索引)
    • 选型:CF(或CBF)。
    • 理由:需要删除高吞吐;CF 查询路径短、空间效率更优;CBF 更易与现有 BF 接口对齐。
  • 强一致与事务边界(必须精确判定)
    • 选型:精确索引/集合(B+Tree、哈希索引、Redis Set)。
    • 理由:过滤器仅做“可能存在”的粗筛,不能替代主键/二级索引的精确存在性与事务语义。

快速决策表

场景特征首选备选不建议
缓存穿透防护、集合基本静态BFRedisBloom BFCF(成本高)
缓存条目频繁上下架/有过期CF/CBFBF + 定时重建仅用 BF
风控黑名单实时增删、低延迟CFCBFBF
风控需计数/频次窗口CBFCF(计数不如 CBF 直观)BF
数据库前置存在性过滤BFCF
数据库列值动态集合、需删除CFCBFBF
必须零误判/可枚举白名单精确集合(Set/索引)BF + 二次校验仅用 CF/CBF/BF

🔥 关注公众号【云技纵横】,开始更新redis缓存进阶,包含小白速通布隆过滤器!

落地注意事项

  • 先定目标:明确可接受的误判率 fpp元素规模 n,再反推m/k(BF);CF 需选定指纹长度/桶大小最大踢出次数
  • 读多写少优先 BF;有删除/回滚优先 CF/CBF;分布式优先Redis 模块/客户端封装
  • 过滤器只做“前置拦截”,所有“可能存在”的路径必须做二次精确校验(缓存/数据库)。
  • 关注运维:CBF 计数位宽与溢出;CF 的装载因子/扩容失败重试;BF 的重建窗口冷启动预热
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/8 20:39:45

cuda安装完成后验证步骤:nvidia-smi与PyTorch-CUDA-v2.8联动检查

CUDA环境验证实战:从驱动到PyTorch的端到端检查 在深度学习项目启动前,最令人沮丧的场景莫过于——代码写完、数据准备好,结果运行时却发现GPU没启用。更糟的是,错误信息模糊:“CUDA not available”,却不…

作者头像 李华
网站建设 2026/2/8 21:45:45

Android16 添加应用共享库

有时候需要添加一个公共so库,给多个应用使用,可以做如下修改:在system/core/rootdir/etc/public.libraries.android.txt里面修改:# See https://android.googlesource.com/platform/ndk//main/docs/PlatformApis.md libandroid.so…

作者头像 李华
网站建设 2026/2/8 10:36:42

【课程设计/毕业设计】基于springboot的公司财务管理系统设计实现 财务收支管理 收入/支出记录增删改查基于SpringBoot财务管理系统的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/8 5:09:47

【实战】 SAAS租户元数据模型设计

SAAS租户元数据模型设计 请关注公众号【碳硅化合物AI】 设计说明 本文档定义SAAS多租户平台的元数据模型,包括应用、模块、菜单、按钮、API、实体、表单、字段、视图等元数据对象,以及它们与租户的关联关系。 元数据表结构 1. 应用表 (application)…

作者头像 李华
网站建设 2026/2/9 9:07:40

Java毕设选题推荐:基于SpringBoot+web的中医诊所预约挂号系统设计与实现基于web的中医诊所预约挂号系统设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/5 12:01:19

Git忽略文件.gitignore模板:PyTorch项目必备

Git忽略文件 .gitignore 模板:PyTorch 项目必备 在深度学习项目的日常开发中,你是否曾遇到过这样的场景?刚完成一轮模型训练,准备提交代码时,发现 Git 列出了成百上千个待跟踪文件——从 checkpoints/ 下的 .pth 权重…

作者头像 李华