【redis】redis添加bloom filter布隆过滤器插件

前言

redis在4.0版本以后可通过插件的形式添加布隆过滤器,以下为具体操作。

操作

https://github.com/RedisBloom/RedisBloom下载最新的release源码,在编译服务器进行解压编译:

tar zxvf RedisBloom-1.1.1.tar.gz
cd RedisBloom-1.1.1
make

得到动态库rebloom.so
启动redis时,如下启动即可加载bloom filter插件

./redis-server /usr/local/redis/conf/redis_6380.conf --loadmodule /usr/local/redis/src/rebloom.so INITIAL_SIZE 10000000 ERROR_RATE 0.0001
指定了默认的容量与容错率

命令:

新建过滤器:

BF.RESERVE {key} {error_rate} {size}
error_rate指容错率,取值范围为(0,1),数值越小,占用内存越大,操作时占用cpu资源 越大。
Size指过滤器的容量,添加的条目数超过此数字后,性能将开始下降。实际降级将取决 于超出限制的程度。随着条目数呈指数增长,性能将呈线性下降。
如果不通过该命令来新建过滤器,bf.add添加值时会自动创建过滤器,但会使用默认的 容量与容错率。

添加过滤器与值:

BF.ADD {newFilter} {foo}
如果过滤器不存在,则会自动创建,使用默认的容量与容错率。

检查过滤器中是否存在值:

BF.EXISTS {newFilter} {foo}

参考:

https://baijiahao.baidu.com/s?id=1611754128562106165&wfr=spider&for=pc
https://oss.redislabs.com/redisbloom/Bloom_Commands/

原文地址:https://www.cnblogs.com/JesseTsou/p/10918383.html

时间: 2024-10-11 02:10:18

【redis】redis添加bloom filter布隆过滤器插件的相关文章

Bloom Filter布隆过滤器

http://blog.csdn.net/pipisorry/article/details/64127666 Bloom Filter简介 Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合.布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的.它实际上是一个很长的二进制向量和一系列随机映射函数.布隆过滤器可以用于检索一个元素是否在一个集合中.它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定

Bloom filter(布隆过滤器)概念与原理

写在前面 在大数据与云计算发展的时代,我们经常会碰到这样的问题.我们是否能高效的判断一个用户是否访问过某网站的主页(每天访问量上亿)或者需要统计网站的pv.uv.最直接的想法是将所有的访问者存起来,然后每次用户访问的时候与之前集合进行比较.不管是将访问信息存在内存(或数据库)都会对服务器造成非常大的压力.那是否存在一种方式,容忍一定的错误率,高效(计算复杂度.空间复杂度)的实现访问量信息的跟踪.统计呢?接下来介绍的布隆过滤器(BloomFilter)就可以满足当前的使用场景(注释:基数计数法同样

Bloom Filter(布隆过滤器)原理

Bloom Filter(布隆过滤器)主要用于判断某个元素是否属于集合内,但是这种判断不是一定正确的. 经典问题: 假设你有数量非常庞大的URL集合,现在给你一个新的URL,要你快速判断这个URL是否在上述的URL集合中. 解决这个问题比较原始的方法是:先用一个数组把所有URL存起来,然后再扫描这个数组,判断里面是否有元素与新的这个URL相同.这样做会耗费非常大的空间和时间,是非常不妥的一种做法. 另一种非常快速的方法就是使用布隆过滤器了.如果布隆过滤器说一个元素在某个集合内,那么这个元素是很有

海量信息库,查找是否存在(bloom filter布隆过滤器)

Bloom Filter(布隆过滤器) 布隆过滤器用于测试某一元素是否存在于给定的集合中,是一种空间利用率很高的随机数据结构(probabilistic data structure),存在一定的误识别率(false positive),即布隆过滤器报告某一元素存在于某集合中,但是实际上该元素并不在集合中,但是没有错误识别的情形(false negative),即如果某个元素确实没有在该集合中,那么布隆过滤器是不会报告该元素存在于集合中的,没有漏报的情形出现,召回率为百分之百. 算法描述 布隆过

bloom filter(布隆过滤器)

今天中邪了, 觉得看看bloom filter. 看看海量数据处理的经典算法. 这是1970年提出来.  是用于检测一个元素是不是一个集合的成员. 如果检测结果为True, 则该元素不一定在该集合中. 如果检测结果为False, 表明该元素一定在这个集合中. 这说明bloom filter 具有 100%的召回率. 每个检测请求返回的结果只有两种, 也就是"在集合内(可能错误)" 和 "绝对不在集合内". 可见bloom filter 牺牲了正确率和时间, 换取空间

Bloom filters 布隆过滤器

在ITPUB上看到有人写到同一条语句连续执行两次,得出的结果截然不同,数据本身没有发生变化,关掉dynamic_sampling功能,多次查询结果是正常的.究竟是为什么? oracle通过内部函数使用布隆过滤对并行JOIN进行过滤.但是布隆过滤的精确度是依赖hash函数的好坏以及使用的hash函数数量决定的.你试试将_bloom_filter_enabled设为FALSE关掉布隆过滤:或者将_bloom_vector_elements设为一个稍大的数字.SQL> alter session se

深入Redis(五)布隆过滤器

布隆过滤器 HyperLogLog可以进行估数,非常具有价值,可以解决很多精确度要求不高的统计需求. 但是如果我们想知道某一值是不是在HyperLogLog结构内则无能为力了,因为HyperLogLog没有提供类似pfcontains这种方法. 比如,我们在使用新闻客户端看新闻时,它会不断推荐新的内容,每次推荐时都要去重,那么如何实现推送去重? 我们会想到,服务器记录了用户看过的所有历史纪录,推荐系统每次都从用户的历史纪录内筛选已经看过的记录,但用户量很大并且每个用户看过的新闻又很多时,推荐系统

7.【Redis系列】Redis的高级应用-布隆过滤器

原文:7.[Redis系列]Redis的高级应用-布隆过滤器 拿今日头条来说,它会不停的给我们推荐新的新闻,每次推荐都要去重,过滤掉我们之前看过的内容,今日头条如何做到去重呢,我们上面的HyperLogLog虽然能去重,但是没有办法确认这个新闻有没有被浏览 过,没有pfcontains的方法.有没有更好的解决方案呢? Redis为我们准备了布隆过滤器,是专门用来解决这种去重问题的,它在起去重功能的同时,空间上还可以节约90%,只是稍微有一定的误判率. 什么是布隆过滤器 布隆过滤器可以理解为稍微不

布隆过滤器总结

一:布隆过滤器简介: Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合.Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive).因此,Bloom Filter不适合那些“零错误”的应用场合.而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省. 二:优势和劣势 1:优势: