今天碰到个业务,他的 Redis 集群有个大 Value 用途是作为过滤器,但沟通的时候被小怼了一下,意思大概是 “过滤器原理都不懂,还要我优化?” 。技术菜被人怼认了、怪不得别人,自己之前确实只是听说过这个,但是没深入了解过,趁这个机会补充一下知识。在进入正文之前,之前看到的有句话我觉得说得很好:Data structures are nothing different. Th
问题的提出我们有一个不安全网页的黑名单,包含了100亿个黑名单网页的URL,每个网页URL最多占用64B.。现在我们要设计一个网页过滤系统,这个系统要判断该网页是否在黑名单里,但是我们的空间有限,只有30GB.允许有万分之一的判断失误过滤器我们可以把所有的URL保存起来,比如放到hashmap里,但是64B*100亿=640GB,不符合要求。过滤器(Bloom Filter)是1970年由
目录前言一、什么是过滤器(Bloom Filter)二、过滤器的原理三、过滤器的工作流程四、过滤器的实际应用场景五、Java实现过滤器5.1、Guava5.2、Redission5.3、Apache Commons5.4、Jedis前言        想必大家都知道过滤器,它是为了预防黑客发起大量非法请求的一种手段,例如Redis的缓
过滤器概念及其公式推导过滤器概念数据如何存入过滤器误判情况实际应用面试题公式推导误判概率即失误率的证明和计算其他使用场景过滤器概念数据如何存入过滤器过滤器是由一个很长的二进制矢量和一系列哈希函数组成的。二进制矢量本质是一个位数组:数组的每个元素都只占1bit空间,并且每个元素只能为0或1。过滤器还拥有k个哈希函数,当一个元素加入过滤器中的时候,会使用k个哈希函数对其
一种节省空间的概率数据结构过滤器可以理解为一个不怎么精确的 set 结构,当你使用它的 contains 方法判断某个对象是否存在时,它可能会误判。但是过滤器也不是特别不精确,只要参数设置的合理,它的精确度可以控制的相对足够精确,只会有小小的误判概率。当过滤器说某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存在。打个比方,当它说不认识你时,肯定就不认识;当它说见过你时,可能
一、什么是过滤器过滤器(Bloom Filter)是一个很长的二进制向量和一系列随机映射函数。它是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效的插入和查询,可以用于检索一个元素是否在一个集合中。优点:相比于传统的list、set、map等数据结构,它更高效、占用空间更少。 缺点:返回的结果是概率性(存在误差),不是确切的。二
转载 2023-07-28 22:23:52
1277阅读
## 使用 Redisson 和 Spring Boot 实现过滤器 在这篇文章中,我们将学习如何在 Spring Boot 项目中使用 Redisson 实现整数的过滤器。过滤器是一种用于检索数据集中的元素是否存在的概率型数据结构,它可以有效减少数据存储空间并提供快速的查询性能。 ### 流程概述 下面是实现过滤器的步骤概述: | 步骤 | 描述
原创 10月前
157阅读
# 使用 Redisson 实现过滤器 过滤器是一种空间效率极高的概率型数据结构,用于测试一个元素是否在一个集合中。它的优势在于能够快速判断,但可能会出现“假阳性”(即判断元素在集合中,但实际上并不存在)。在分布式系统中,过滤器尤其有用,因为它可以大大减少对数据库的无效查询。我们可以通过 Redisson,Java 的一个 Redis 客户端,来实现过滤器。 ## 什么是 Re
开场: 如何判断一个大集合中是否含有某个元素?背景:为了最大化提升广告转化效果,业务方决定对接巨量引擎,广点通以及快手RTA服务。并针对自身情况决定是否出广告(新用户出,旧用户不出)。大致示意图要求: 1. QPS至少要能撑住30W。2. 接口响应不能超过60ms面临的问题:1.高并发——> 负载均衡这块交由中台完成(部署到k8s, 由40个pod分摊掉流量)。2.低延迟 ——&g
------------------------------------------------------------------------------------------------------慢慢来,一切都来得及 介绍过滤器(Bloom Filter)是1970年由提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。过滤器可以用于检索一个元素是否在一个集合
一、什么是过滤器?过滤器(英语:Bloom Filter)是1970年由提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。 二、过滤器的使用场景网页爬虫对URL的去重,避免爬取相同的URL地址;反垃圾邮件,从数十亿个垃圾邮件列表中判断某邮箱是
过滤器可以使用极少的空间来判断一个元素是否存在某一个集合中,本文不具体讨论过滤器的原理,而是探讨如何实现一个可用的过滤器。实现源代码:github.com/Smith-Cruis…本文代码提取自 Apache ORC 项目。基本概念这里附带一些链接,适合不了解过滤器的人阅读。zhuanlan.zhihu.com/p/72378274误算率 False Positive使用布过滤器
转载 2024-04-02 07:46:01
41阅读
缓存穿透的问题?缓存穿透: 指定使用一些不存在的key进行大量的查询Redis,导致无法命中,每次请求都会传到持久层进行查询,导致对数据库的压力非常大。那摩有哪些解决方案呢?对我们的服务接口实现限流,用户授权、黑名单和白名单拦截从缓存和数据库都查询不到结果的话,一样将数据库空值结果缓存到Redis中:设置30s的有效期避免使用同一个id对数据库攻击,但是如果真是黑客要搞你,那摩他随机生成的id肯定
过滤器使用教程 文章目录过滤器使用教程1.背景2.什么是Bitmap3.过滤器3.1 什么是过滤器3.2 过滤器的作用3.3 过滤器的基本原理4.过滤器的实现Guava和Redisson4.1 实现思路4.2 SpringBoot实现这些操作Bitmap,guava,redisson过滤器 1.背景最近公司对所有请求响应的数据进行推送kafka到大数据,然后落入数仓
转载 2023-12-14 03:36:56
95阅读
1点赞
过滤器(Bloom Filter)是1970年由提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。本质上过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来
转载 2023-10-13 21:49:29
17阅读
过滤器原理 过滤器原理 开发一个电商项目,因为数据量一直在增加(已达亿级),所以需要重构之前开发好的秒杀功能,为了更好的支持高并发,在验证用户是否重复购买的环节,就考虑用布过滤器。也顺便更加深入的去了解下过滤器的原理,感觉还是蛮有意思的,这一连串的公式不静下心来思考,很容易被绕晕。 一、概述1、什么是过滤器本质上过滤器是一种数据结构,比较巧妙的概率型数
过滤器过滤器可以理解为一个不怎么精确的 set 结构,当你使用它的 contains 方法判断某 个对象是否存在时,它可能会误判。但是过滤器也不是特别不精确,只要参数设置的合 理,它的精确度可以控制的相对足够精确,只会有小小的误判概率。当过滤器说某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存 在。打个比方,当它说不认识你时,肯定就不认识;当它说见过你时,可能根本就没见
转载 2023-10-10 08:54:32
307阅读
Redisson 过滤器使用 在现代应用中,过滤器是一种用于判断元素是否在集合中的高效数据结构。利用 Redisson,我们可以轻松实现过滤器的功能,以减少内存消耗并提高查询效率。本文将详细介绍如何在项目中使用 Redisson 的过滤器,包括环境准备、集成步骤、配置详解、实战应用、排错指南及性能优化。 ## 环境准备 在开始之前,我们需要确保开发环境的准备。首先,确保你的项
原创 6月前
96阅读
## 使用Redission过滤器实现过期时间 ### 1. 流程概述 在使用Redission过滤器实现过期时间的过程中,我们需要完成以下几个步骤: | 步骤 | 描述 | | --- | --- | | 步骤1 | 创建Redission客户端 | | 步骤2 | 创建一个过滤器实例 | | 步骤3 | 向过滤器中添加元素 | | 步骤4 | 设置元素的过期时间 | |
原创 2024-01-11 06:59:09
475阅读
文章目录1、什么是过滤器2、过滤器的使用场景3、过滤器的原理3.1 数据结构3.2 空间计算3.3 增加元素3.4 查询元素3.5 修改元素3.6 删除元素4、Redis集成过滤器4.1 版本要求4.2 安装&编译4.2.1 下载插件压缩包4.2.2 解压4.2.3 编译插件4.3 Redis集成4.3.1 Redis配置文件修改4.3.2 测试是否成功5、Redis中
转载 2024-09-18 09:51:26
46阅读
  • 1
  • 2
  • 3
  • 4
  • 5