bloom filter server

[size=large]1.实现[/size]
[color=red]基于boost svn中bloom filter库编写。为beta版,需要依赖其他项目的日志库等组件,有兴趣的朋友可以私信联系,我来优化[/color]
[url]https://github.com/godlovesdog/bloom_filter[/url]
[size=large]2.简介[/size]
bloom filter是一种消重过滤器,该过滤器具有如下

[size=medium]优势:[/size]
[list]
[*]存储空间小:过滤器是一个位矢量,每个数据元素被hash成该矢量中的某几个bit,而非hash成多个字节。
[*]时间复杂度低:O(1),只需进行简单的hash计算
[/list]
[size=medium]缺点:[/size]
[list]
[*] 有一定的误判率——如果待查询数据在filter中,就一定能被判别出来;但因为hash碰撞,未在filter中的元素仍有可能被误判为已存在
误判率可以通过增大存储空间而控制在一定范围内。如用512MB空间作为filter,使用7个hash函数时,向该过滤器中存储1000万个元素时,误判率为1.26312e-07%;存储1亿条记录时,误判率为0.201594%
[*] 无法删除filter中的元素
[/list]
[size=large]3.使用[/size]
[size=medium]3.1 启动[/size]

git clone $G:bloom_filter
cd bloom_filter/bin
./bloom_filter

配置文件bloom_filter/conf.ini
默认监听8000端口
[size=medium]3.2 请求[/size]
支持GET及POST两种http请求方式:
[list]
[*]GET:查询某个key是否已在filter中存在
[*]POST:查询某key是否已存在filter中,不存在则将其插入到filter中
[/list]
[color=red]参数必须为"ks"[/color]多个key之间以逗号分隔
curl http://172.28.0.23:8000/?ks=1,2
curl http://172.28.0.23:8000/?ks=1,2 -X POST
[size=medium]3.3 返回结果[/size]
[color=red]json字符串[/color]

{
"1": "false",
"3": "false"
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值