Redis 过滤器

Redis-布隆过滤器(Bloom Filter)详解 什么是布隆过滤器 布隆过滤器(Bloom Filter)是 1970 年由布隆提出的,是一种非常节省空间的概率数据结构,运行速度快,占用内存小,但是有一定的误判率且无法删除元素。它实际上是一个很长的二进制向量和一系列随机映射函数组成,主要用于判断一个元素是否在一个集合中。 通常我们都会遇到判断一个元素是否在某个集合中的业务场景,这个时候我们可能都是采用 HashMap的Put方法或者其他集合将数据保存起来,然后进行比较确定,但是如果元素很多的情况下,采用这种方式就会非常浪费空间,最终达到瓶颈,检索速度也会越 阅读详情

1、使用数据结构:set
2、使用操作命令:Redis 集合(Set)


// 向集合添加一个或多个成员
SADD key member1 [member2] 

// 移除集合中一个或多个成员
SREM key member1 [member2] 

// 判断 member 元素是否是集合 key 的成员
SISMEMBER key member 

3、实现原理:把用户ID存入set 中,判断是否存在

  1. 使用 SADD key member 保存用户ID,使用 SREM key member 移除用户ID
  1. 使用 SISMEMBER key member 判断是否存在

4*、 如果用户数量大的话可以使用布隆过滤器

原理和set 一样,只是存放的用户ID的指纹(使用 多个 hash 函数对 key 进行运算,算得一个证书索引值,然后对位数组长度进行取模运算得到一个位置,每个 hash 函数都会算得一个不同的位置,再把位数组的这几个位置都置为 1,就得到了一个指纹)

判断是否存在时,在使用相同的方法判断每个位置上是否都为1

如果判断不存在,那必然是不存在;但是如果判断是存在时,布隆过滤器会有0.1%的误差,因为有可能某个位置上的1是其他key产生的

基于Redis的分布式布隆过滤器 布隆算法是一个以牺牲一定的准确率来换取低内存消耗的过滤算法,可以实现大量数据的过滤、去重等操作。 本博客不讨论布隆算法的具体原理,如果想了解的可以查看这篇博客:布隆过滤器(Bloom Filter)详解 为了实现分布式过滤器,在这里使用了Redis,利用Redis的BitMap实现布隆过滤器的底层映射。 布隆过滤器的一个关键点就是如何根据预计插入量和可接受的错误率推导出合适的BIt数组长度和... 阅读详情

相关推荐

基于Redis的布隆过滤器的实现

项目简介包含一个基于Redis的布隆过滤器的实现,以及应用到Scrapy中的Demo。地址:BloomFilterRedis布隆过滤器网上有很多介绍,推荐《数学之美》,介绍的很详尽,此处不再赘述。哈希函数布隆过滤器中需要n个哈希函数,我使用的是Arash Partow提供的常见哈希函数。建立在Redis上的布隆过滤器Redis中有一个数据结构叫做Bitmap(下方有官网详解),它提供一个最大长度为5

孔天逸'Blog 3万+

redis缓存忽略字段不匹配,并记录日志

发布项目时发生了很多次因为字段更新导致redis缓存字段不匹配报错,因为开发了很多的项目,为了保持所有的项目pojo类同步,我们专门搞了一个pojo项目,里面存放所有的pojo类,包括实体类和dto,放到maven上面,然后其他所有项目引用maven。 但是最近又发生了redis缓存报错的问题,原因是我们建立了项目分支系统,包括pojo类也是,然后维护人员在发布的时候可能因为没有及时切换pojo项目或者是因为编译问题,导致把分支上的pojo类发布了上去,又导致缓存报错了,虽然属于操作失误,一般来说不应该发

qq_36804701的博客 1517

手把手教你使用ESM-2进行蛋白质结构预测:从安装到实战

本文详细介绍了如何使用ESM-2蛋白质语言模型进行蛋白质结构预测,从环境准备、模型安装到实战应用。通过逐步指导,读者可以掌握ESM-2的配置、单序列预测、结果可视化及高级优化技巧,适用于生物信息学研究和药物开发。

weixin_29306875的博客 533

Redis布隆过滤器详解

布隆过滤器(Bloom Filter)是 Redis 4.0 版本提供的新功能,它被作为插件加载到 Redis 服务器中,给 Redis 提供强大的去重功能。相比于 Set 集合的去重功能而言,布隆过滤器在空间上能节省 90% 以上,但是它的不足之处是去重率大约在 99% 左右,也就是说有 1% 左右的误判率,这种误差是由布隆过滤器的自身结构决定的。俗话说“鱼与熊掌不可兼得”,如果想要节省空间,就需要牺牲 1% 的误判率,而且这种误判率,在处理海量数据时,几乎可以忽略。

怪咖@的博客 8779

Nginx反向代理MinIO私有桶签名失效?一招解决Host头校验问题

本文详细解析了Nginx反向代理MinIO私有桶时出现的签名失效问题,重点解决了Host头校验导致的"SignatureDoesNotMatch"错误。通过精准配置proxy_set_header保持Host头一致性,并提供了二级目录代理和调试指南,帮助开发者高效解决这一常见技术难题。

weixin_29201313的博客 321

新手也能搞定的ANPC三电平逆变器Simulink仿真:从SPWM调制到开关损耗优化

本文详细介绍了如何在Simulink中搭建ANPC三电平逆变器仿真模型,从SPWM调制基础到开关损耗优化技巧。通过分层设计思路和实用代码示例,帮助新手快速掌握ANPC拓扑的核心功能,包括中点平衡控制和性能指标分析,为电力电子系统设计提供实践指导。

weixin_30335575的博客 408

redis系列(二)

1、布隆过滤器BloomFilter 需求:现有50亿个电话号码,现有10万个电话号码,如何要快速准确的判断这些电话号码是否已经存在? 布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的,它实际上是一个很长的二进制数组+一系列随机hash算法映射函数,主要用于判断一个元素是否在集合中。 通常我们会遇到很多要判断一个元素是否在某个集合中的业务场景,一般想到的是将集合中所有元素保存起来,然后通过比较确定。 链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,但是随着集

prefect_start的博客 899

STM32开发笔记85: SX1268驱动程序设计(芯片唤醒)

单片机型号:STM32L053R8T6 本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍芯片唤醒驱动程序。 一、RxDutyCycle模式 在讲述本篇内容之前,我们先来看一下SX1268的一种模式RxDutyCycle,译为中文为接收占空比模式。其可使用SetRxDutyCycle命令进入RxDutyCycle模式,我们来看一下该命令的详细解释。 该命令具有2个参数,...

snmplink的博客 4068

redis常用命令

---------------常用命令-------------------------------------- redis集群的端口号cdh01:7000,7001 cdh02:7002,7003 cdh03:7004,7005 redis-cli -h cdh02 -c -p 7002 -a redis123 TTL KEY_NAME 当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。 注意:在 Red

qq_25073261的博客 1096

【AIGC】大模型面试高频考点09-大模型Agent框架

聚焦AIGC专业技术分享

一个内容严谨、方向前沿、极具实践价值的AI大模型技术分享站 1967

【知识分享】什么是同轴传输线结构?

同轴传输线的几何形状由中心导体组,嵌在介电材料(Dielectric)中,并且,被连续的外导体所包围,也被称为屏蔽(Shield)。内外导体有相同的几何中心轴,因此得名同轴(Coaxial)。

一只豌豆象的博客 2372

Redis-布隆过滤器

布隆过滤器,海量数据去重、过滤的不二之选

xiaoyuanbama的博客 1273

JAVA:Spring Boot 集成 Baidu UID-Generator ID 生成器

百度UID-Generator是一款高性能分布式ID生成器,支持600万QPS,提供Snowflake扩展版和Cache模式两种实现方式。文章详细介绍了如何在Spring Boot项目中集成该组件,包括Maven依赖配置、MySQL表结构初始化、Spring Boot数据源配置、WorkerId分配策略实现以及UID生成器的核心配置。该方案具有无中心依赖、ID单调递增、支持集群部署等特点,适用于订单号、用户ID等分布式场景。通过缓存模式(Cache-Buffer)可进一步提升性能,满足高并发业务需求。

木头 487

Redis详解 - Redis布隆过滤器

1.布隆过滤器使用场景 比如有如下几个需求: ①、原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中? 解决办法一:将10亿个号码存入数据库中,进行数据库查询,准确性有了,但是速度会比较慢。 解决办法二:将10亿号码放入内存中,比如Redis缓存中,这里我们算一下占用内存大小:10亿*8字节=8GB,通过内存查询,准确性和速度都有了,但是大约8gb的内存空间,挺浪费内存空间的。 ②、接触过爬虫的,应该有这么一个需求,需要爬虫的网站千千万万,对于一个新的网站url,

专业的计算机毕业设计指南 1103

CAPL学习之路-关键字

在capl中,关键字具有特殊的含义和用途,因此,不得将关键字用作变量或函数的名称 声明数据类型的关键字 可以用不同的关键字,声明或引用不同类型的数据 byte 声明一个字节的变量 word 声明两个字节的变量 dword 声明四个字节的变量 int 声明两个字节的整数 long 声明四个字节的变量 qword 声明八个字节的变量 char 声明一个字符串 float 声明一个浮点数,8个字节 double 声明一个浮点数,8个字节 定义一个结构体或枚举类型 struct struct Data { .

jasonj333 6108

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【Redis】布隆过滤器

布隆过滤器的简介、Redis的布隆过滤器的实现

人类所有真实的快乐,一定是恒久的努力 4287

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

玩转Redis-Redis中布隆过滤器的使用及原理

《玩转Redis》系列文章主要讲述Redis的基础及中高级应用。本文是《玩转Redis》系列第【11】篇,本文关键字:玩转Redis、Bloom filter、布隆过滤器、无偏hash函数; - 布隆过滤器的底层原理 - 布隆过滤器的底层结构 - 最佳hash函数数量与错误率的关系 - 所需存储空间与错误率及容量关系 - 布隆过滤器如何扩容 - 布隆过滤器有哪些应用场景 - 布隆过滤器的优缺点 - 延伸拓展

zxiaofan.com 9238

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Redis】Redis布隆过滤器

缓存击穿介绍 什么是缓存击穿 我们通常使用redis作为数据缓存,当请求进来时先通过key去redis缓存查询,如果缓存中数据不存在,需要去查询数据库的数据。当数据库和缓存中都不存在的数据来查询时候,请求都打在数据库的请求中。如果这种请求量很大,会给数据库造成更大的压力进而影响系统的性能。 解决这类问题的方法 方法一:当DB和redis中都不存在key,在DB返回null时,在redis中...

u011521890的专栏 7092

redis实现布隆过滤器

本文介绍了两种基于Redis实现布隆过滤器的方法。第一种使用Redisson的RBloomFilter组件,通过Bitmap底层实现,提供了IP黑名单管理的示例代码,包括添加和查询功能。第二种方法手动实现布隆过滤器逻辑,详细说明了bit数组、哈希函数等核心概念,以及n、p、m、k参数之间的关系。两种方法都适用于大规模数据场景下的高效存在性判断,具有空间效率高和查询速度快的特点。文档还提供了相关Redis安装、集群搭建和SpringBoot整合的参考资料,以及官方文档链接和下载地址。

shuai的博客 1137

Redis 技术内幕——布隆过滤器

Redis Cluster(集群)是官方提供的集群功能。Redis 在 3.0 版本中提供了 Redis Cluster 来满足分布式的需求。为什么需要集群?并发量,据 Redis 官方测试,有 50 个并发程序来执行 10 万次请求,Redis 读的速度达到了 11 万次/秒,写的速度达到了 8.1 万次/秒。那如果业务需要 100 万次/秒呢? 数据量,一台生产机器内存一般在 16G~256G,如果业务需要 500G 数据呢?

一叶知秋的博客 2445

Redis-布谷鸟过滤器

布谷鸟过滤器就是布隆过滤器的升级版,全面优化了布隆过滤器的痛点。本文只要介绍布谷鸟过滤器的原理,优化思路;以及redis集成使用

xiaoyuanbama的博客 1482

Redis——布隆过滤器

第一次听到布隆是从英雄联盟中,本篇讲的是布隆过滤器,是Redis避免缓存穿透的防御利器; 简单来说就是:当我们通过布隆过滤器判断一个元素在不在集合中时;如果布隆过滤器返回的是在集合中,那么集合中可能没有这个元素;如果布隆过滤器返回的不存在于集合中,那么集合中是一定不存在这个元素的;常见的使用场景就是作为避免缓存穿透的利器;

娜娜米的博客 2580

redis布隆过滤器的使用

1.使用场景:推荐系统给用户推荐新闻,避免重复推送。 需要考虑问题:从用户观看历史中筛选出没有看过的新闻进行推送,就需要数据库中频繁的使用exists进行查询,但是当用户量很大时,数据库很难顶住压力。 解决方法: 1.1.使用缓存?但是日子长了,会浪费很大空间,不是长久之计,不是很好的解决办法。 1.2.这时布隆过滤器就可以很好的解决这个需求了,可以节约90%以上的空间,缺点就是稍微有那么...

杨文炯的博客 2万+

Redis - 布隆过滤器

在之前我们提及过布隆过滤器这个概念,回顾一下当时是在了解缓存穿透的时接触到了这个概念。在没有引入布隆过滤器这个概念时,我们可以通过其他的一些途径解决缓存穿透这个问题。例如我们现在需要获取用户数据,参数中包含用户ID,若某个请求中传递了一个我们数据库中不存在的用户ID,那么这个请求无论请求多少次都会穿透缓存命中DB,当然我们可以通过缓存空值去尽量避免这个问题。但是我们还可以通过一种思路去解决,我们在代码中维护一个内存数据结构(List/Set/Map),在项目启动时将数据库中存在的用户ID维护到一个集合中,则

了无牵挂者忘生,心有所爱者忘死 1339

Redis 中的概率过滤器:布隆过滤器与布谷鸟过滤器实战对比

特性布隆过滤器布谷鸟过滤器支持删除❌✅插入性能很快 O(k)快,但高负载下可能变慢查询性能很快 O(k)很快 O(1)内存占用9.6bits/元素 (误判率 0.01)12bits/元素 (比布隆多约 25%)假阳性率随负载增加而增加相对稳定(约 0.4%)实现复杂度简单较复杂Redis 支持RedisBloomRedisBloom适用场景大规模数据、内存受限、静态数据集需要删除、更高准确率、动态数据集。

sc35262的博客 944

Redis集群实现布隆过滤器

前言 其实,在这之前我还真的不知道布隆过滤器是个啥,感谢群里一位大神网友,提供了相关代码和资料,至此我才知道什么叫布隆过滤器,本文就是为了指导很多像我一样的人,初识布隆过滤器,并可以结合 redis 及代码实现。 正文 本文分两部分讲解 第一部分让读者知道什么是布隆过滤器,以及适用的场景。 第二部分我们结合 redis集群实现一个简单布隆过滤器,并测试达到过滤的效果,本文的封装的代码可以...

晏霖/胖虎的博客 7501
上一篇: Redis 消息队列(简单版)
下一篇: Redis 排行榜
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值