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