google code 上的介绍
Introduction
Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员,被广泛使用于各种海量数据排重的场景中。Mc bloom filter是一个全新的排重服务器,它采用memcached的网络层封装了bloom filter的操作,使各种语言php、java、perl、python、go、c等等,都能使用memcached的协议进行bloom filter的操作。
Details
作者
新浪汤晓刚何跃胡鸿
bloom filter 的简介
bloom_filter的百度百科Google黑板报算法详细介绍
mc bloom filter 的特性
- 完全采用memcached的网络层协议,创建、删除、添加、查看状态等。
- mc bloom filter 是一个全内存的排重服务器,所有数据均放在内存中。
- 可以在一个实例中创建多个bloom filter,在内存允许的情况,可以创建几十G大小的bloom filter,支持最高上百亿的数据排重。
- 采用google员工写的的高性能hash算法murmurhash,保证bloom filter的hash的高速
- 单线程版单机读写速度能达到十万次/s(同网段两台服务器多线程压力测试 服务器配置:8核 Intel(R) Xeon(R) CPU E5620 @ 2.40GHz 12G内存)
- 多线程版单机读写能力均能达到30万次/s(同网段两台服务器多线程压力测试 服务器配置:8核 Intel(R) Xeon(R) CPU E5620 @ 2.40GHz 12G内存)
- 32位、64位服务器兼容。
mc bloom filter 的安装
wget https://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz
tar zxvf libevent-2.0.20-stable.tar.gz
cd libevent-2.0.20-stable
./configure
make && make install
- 在bloom filter 的google code 上,下载mc bloom filter的最新稳定版本
1.wget bloom filter的最新稳定版本
2.修改Makefile文件,主要是修改libevent到你的目录
3.在目录中执行make,生成mc_bloom_filter【线上版】 mc_bloom_filter_【调试版】 两个可执行文件,调试版会打很多日志
4. nohup ./mc_bloom_filter -p12345 -d -uroot -m4000 –p/tmp/mc_bloom_filter.pid –l127.0.0.1
日志文件就是当前目录的nohup.out文件
参数 |
是否必须 |
值的含义 |
p(小p) |
是 |
监听端口,默认12345 |
P(大P) |
是 |
pid文件的地址 |
u(小u) |
是 |
用哪个用户运行 |
m(小m) |
是 |
最大内存,单位m |
d(小d) |
是 |
是否用daemon后台运行 |
l(小l) |
是 |
监听的ip |
t |
否 |
表示线程个数,只多线程版本有此参数,单线程无此参数,t默认为4 |
v |
否 |
是否将调试的输出打印出来,如果添加这个参数,会在终端或者nohup.out中打印调试信息 |
mc bloom filter 的命令
add |
add key 0 0 value_lengthexpected_max_amount_of_elements|false_positive_rate
比如add test 0 0 13
1000000|0.001 表示创建一个预计存100万,误判率千分之一的bloom filter
|
成功返回STORED 失败返回NOT_STORED |
set |
set key 0 0 subkey_lengthsubkey |
成功返回STORED 失败返回NOT_STORED |
get |
get key|subkey |
存在返回1,不存在啥都不返回 |
stats |
stats 查看服务器的总体状况 |
信息列表 |
stats blooms |
列举所有过滤器的名称和占用内存字节大小 |
信息列表 |
stats bloom key |
可以查看名字为key的bloom filter的详细信息 |
信息列表 |
try |
try expected_max_amount_of_elements|false_positive_rate比如 try 100000000|0.0001 表示计算1亿个目标存储数,在误判率万分之一的情况下,
需要的内存大小用来预估过滤器所需的内存大小和hash函数个数
|
信息列表 |
setmem |
setmem size(Mbytes) 用来设定当前进程可使用的内存容量,单位是m,比如要设置内存1G,setmem 1024 成功返回STORED |
成功返回STORED,失败返回NOT_STORED |
PHP 的使用demo
<?php
$mc = new Memcache();
$mc -> add("my_bloom","10000000|0.0001");
$mc -> set("my_bloom","2222222");
var_dump($mc->get("my_bloom|2222222");
?>
|
具体的文档在这里https://code.google.com/mc_bloom_filter
分享到:
相关推荐
Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不...
bloomfilter.js, 使用FNV的JavaScript bloom filter快速散列 Bloom过滤器This过滤器实现使用非加密 Fowler-Noll-Vo散列函数来实现速度。用法var bloom = new BloomFilter( 32 * 256,//number of bits to all
Bloom filter是一个简明的空间效率极高的随机的数据结构。用Bloom filter 表示 cache 内容 ,可以高效地实现cache 协作。本文对BloomFilter及其改进型进行了综述性分析,探讨了它的实用性。
分布式环境下改进的BloomFilter过滤技术
bloom-filter-scala, 用于 Scala的Bloom过滤器,最快的JVM Scala的 Bloom filter 概述Bloom过滤器是一种空间高效的数据结构,用于测试某个元素是否是集合的成员。 false 正匹配是可能的,但 false 负数不是。 ...
介绍Bloom Filter(布隆过滤器)原理、实现及具体应用,包含9个不同PPT及PDF文档资料,对Bloom Filter感兴趣、想学习的同学可以下载查看下
该文档中包含 bloomFilter过滤器中用到的对于字符串进行hash的hash函数共十一个,并带有测试程序..
This is the bloom filter of 2.5 Million ... BloomFilter bf=new BloomFilter(); BitSet bitSet=bf.readBit(fileName); bf.setBits(bitSet); System.out.println(bf.exist("password")); } it will says true.
相似项发现主题中的shingling、simhash、bloom filter算法java实现,测试通过,附带测试数据。
安装$ gem install redis-bloomfilter测验$ bundle install$ rake车手该库包含一组不同的驱动程序。 纯Ruby实现可用于Redis v。> 2.6的基于lua的服务器端版本如何使用require "redis-bloomfilter"# It creates a ...
Java-BloomFilter, 在Java中,一个独立的Bloom过滤器 java-bloomfilterJava bloomfilter是一个独立于Java的Bloom过滤器实现。 它旨在在不需要额外库开销的情况下包含在现有项目中。 第一个版本是由 Ian的博客条目...
Go中的Cuckoo Filter 实现,比 Bloom Filter 更好
leveldb中bloomfilter的优化。
C# 海量数据处理算法BloomFilter算法的实现和测试例子;C# 海量数据处理算法BloomFilter算法的实现和测试例子
提出一种针对动态集合的矩阵型Bloom filter表示与查找法(matrix Bloom filter,MBF),它使用一个s×m位矩阵对数据集合进行哈希表示与查找,较同类算法SBF和DBF,能继承Bloom filter算法常数查找开销的基本精髓。
Respect! The original paper about bloom filter. Very beginning of hash error tolerate algorithm to get wanted data faster.
这是一个java版的bloomFilter Hash函数集,并带有测试程序。在我的资源里还有一个c版的,函数功能相同,在我的应用中具有良好表现。
bloom filter的一些论文 有综述,有应用,较为详细 不过可能需要下载cnki的阅读器,这个比较好下,大家可以自己下个
linux下编写的网络爬虫,可以实现bloom filter 去重过滤,不过是用来垂直爬取www.8684.cn网站的。运行的时候请输入www.8684.cn
bloom filter(布隆过滤器)应用很广泛的高效算法,研究研究