1. 程式人生 > 實用技巧 >載入布隆過濾器模組

載入布隆過濾器模組

在搭建redis服務的基礎上:https://www.cnblogs.com/gabin/p/13652357.html

一、從官網找到module,https://redis.io/modules

二、布隆過濾器原始碼:https://github.com/RedisBloom/RedisBloom

三、下載原始碼,並在目錄下make編譯

四、將編譯好的檔案:redisbloom.so移到自己喜歡的位置,我放到了redis的可執行目錄

五、在redis的配置檔案中增加(請注意絕對地址):

loadmodule /opt/redis/redis6/redisbloom.so

六、重啟redis服務

使用方式:

  • 建立一個過濾器,並增加一個值
  • 判斷這個值是否存在(請注意布隆過濾器的效果是,可以判斷一定不存在,但是不能判斷一定存在)

     原理大概是:

        1、通過對映演算法,算出對應6或8位

        2、將對應6和8位設定到bitmap中對應的偏移位中

        3、根據第二點,如果一個key算出來的位值和其他key重複,則可能出現衝突

        4、由於判斷存在是根據對映演算法,去到對應的bitmap中檢視對應是否有值,只要其中一個位值為0,則一定不存在;但是所有位值為1,並不能代表一定存在

      比如:

        key1算出來, 100 200 300 400 500

        key2算出來, 100 201 300 401 500

        key3算出來, 101 200 301 400 501

      那麼如果此時key1不存在,key2和key3存在;這個時候BF.EXISTS key1是存在還是不存在呢?

      答案是存在:因為key2和key3的並集正好包含了key1

      可是實際上key1存在嗎?

      答案是:不存在!