RedisBloom 的安装及使用


  RedisBloom模块提供了四种数据类型:Bloom Filter and Cuckoo Filter , a Count-Mins-Sketch and a Top-K 。 本文介绍前两种过滤器的使用,Count-Mins-Sketch and Top-K 可参考官网用法https://oss.redislabs.com/redisbloom

Bloom Filte 与 Cuckoo Filter 的对比:

时下一个非常流行的哈希索引结构就是bloom filter,它类似于bitmap这样的hashset,所以能够在 O(1) 的时间复杂度下快速确认该物品有没有存在。但是它有几个问题:

    • 可能存在误报
    • 无法删除元素
    • 无法阻止插入(无法判断容器是否已满)

而cuckoo filter则可以解决这些问题。它的优势在于:

    • 支援动态的新增,删除节点
    • 当整个结构接近使用完毕的时候, Cuckoo Filter 具有更好的 Lookup 效能
    • 具有 False Positive Rate 比 Bloom Filter 更小 (< 3%) 并且具有更少的空间使用

 

一、安装RedisBloom

  1、下载RedisBloom模块

 

1、git 下载
git clone https://github.com/RedisBloom/RedisBloom.git
cd redisbloom
make

2、wget 下载
wget https://github.com/RedisBloom/RedisBloom/archive/v2.0.3.tar.gz
tar -zxvf RedisBloom-2.0.3.tar.gz
cd RedisBloom-2.0.3/
make

 

 

  2、修改Redis Conf

[root@emunshe ~]#vim /etc/redis.conf

# 在文件中添加下行
loadmodule /root/RedisBloom-2.0.3/redisbloom.so

 

  3、启动Redis server

[root@emunshe ~]# /redis-server /etc/redis.conf

或者启动服务时加载os文件
[root@emunshe ~]# /redis-server /etc/redis.conf --loadmodule /root/RedisBloom/redisbloom.so

 

  4、测试RedisBloom

[root@emunshe ~]# redis-cli
127.0.0.1:6379> bf.add bloomFilter foo
127.0.0.1:6379> bf.exists bloomFilter foo

127.0.0.1:6379> cf.add cuckooFilter foo
127.0.0.1:6379> cf.exists cuckooFilter foo

 

二、python使用RedisBloom

  1、安装

$ pip install redisbloom

   

  2、使用示例

# Using Bloom Filter
from redisbloom.client import Client
rb = Client()
rb.bfCreate('bloom', 0.01, 1000)
rb.bfAdd('bloom', 'foo')        # returns 1
rb.bfAdd('bloom', 'foo')        # returns 0
rb.bfExists('bloom', 'foo')     # returns 1
rb.bfExists('bloom', 'noexist') # returns 0

# Using Cuckoo Filter
from redisbloom.client import Client
rb = Client()
rb.cfCreate('cuckoo', 1000)
rb.cfAdd('cuckoo', 'filter')        # returns 1
rb.cfAddNX('cuckoo', 'filter')      # returns 0
rb.cfExists('cuckoo', 'filter')     # returns 1
rb.cfExists('cuckoo', 'noexist')    # returns 0

 

三、问题记录

  在添加redisbloom os 模块后启动Redis server,使用 systemctl start redis 启动报错;使用redis-server redis.conf正常。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM