亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Redis?布隆過(guò)濾器命令的使用詳解

 更新時(shí)間:2022年08月26日 09:44:00   作者:寧在春  
這篇文章主要介紹了Redis?布隆過(guò)濾器的相關(guān)命令的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

因?yàn)槠匠J褂?Docker 比較多,所以照常還是使用Docker來(lái)準(zhǔn)備環(huán)境啦。

一、Docker 安裝 Redis 布隆過(guò)濾器

Redis 本身并不支持布隆過(guò)濾器,而是采用插件的方式去安裝的,以達(dá)到一種熱拔插的效果。

因?yàn)槲覍?duì)于 liunx 來(lái)說(shuō)就是一個(gè)小白,所以還是用 docker 香。

我就開(kāi)始搜索如何為 docker 上的 Redis 安裝布隆過(guò)濾器, 實(shí)現(xiàn)方式我看了看有好幾種~,但是大都數(shù)都需要去下載 redis 布隆過(guò)濾器的那個(gè)模塊,我覺(jué)得這樣也太麻煩了,肯定有前人偷過(guò)懶了,果然有更直接的方式~

學(xué)習(xí)歷史重要原因之一,就是要學(xué)會(huì)感恩,因?yàn)槲覀兌际钦驹诰奕说募绨蛏稀?/h3>

Docker 上有個(gè)redislabs/rebloom的鏡像,它是將redis布隆過(guò)濾器打包在一起的一個(gè)鏡像,直接使用這個(gè)鏡像啟動(dòng)的redis容器,直接就可以使用布隆過(guò)濾器~:woman:‍:computer:

1.1、安裝

搜索鏡像

docker search redislabs/rebloom

拉取鏡像

docker pull redislabs/rebloom

啟動(dòng)鏡像

docker run -d -p 6379:6379 --name myrebloom redislabs/rebloom

注意:

我只是為了有個(gè)寫(xiě)demo的環(huán)境,所以redis未落盤(pán),也未設(shè)置密碼,用的也是默認(rèn)端口,真實(shí)要用,不能這么玩,當(dāng)然也沒(méi)這樣玩的。

1.2、測(cè)試

進(jìn)入容器中,我們來(lái)用redis-cli玩一玩~

docker exec -it [容器名|容器id] bash #/bin/bash 都可
 redis-cli

確定沒(méi)啥問(wèn)題,咱們來(lái)玩 Redis 的布隆過(guò)濾器

二、RedisBloom 命令講解

2.1、命令大綱

先看看總共有哪些命令,待會(huì)咱們一條一條來(lái)嘗試,均來(lái)自redis官網(wǎng)。

CommandDescription
BF.ADD添加一個(gè)元素到布隆過(guò)濾器
BF.EXISTS判斷元素是否在布隆過(guò)濾器
BF.INFO返回有關(guān)布隆過(guò)濾器的信息
BF.INSERT將多個(gè)元素添加到過(guò)濾器。如果鍵不存在,它會(huì)創(chuàng)建一個(gè)新的過(guò)濾器。
BF.MADD添加多個(gè)元素到布隆過(guò)濾器
BF.MEXISTS判斷多個(gè)元素是否在布隆過(guò)濾器
BF.RESERVE創(chuàng)建一個(gè)布隆過(guò)濾器。設(shè)置誤判率和容量
BF.SCANDUMP開(kāi)始增量保存 Bloom 過(guò)濾器。
BF.LOADCHUNK恢復(fù)之前使用BF.SCANDUMP保存的布隆過(guò)濾器。

2.2、BF.ADD 和 BF.MADD

語(yǔ)法格式:

BF.ADD key value 
 BF.MADD key value1 value2 ...

當(dāng)key不存在的時(shí)候,會(huì)創(chuàng)建一個(gè)空的布隆過(guò)濾器,并會(huì)給定一個(gè)默認(rèn)的誤判率和含有上限容量的的子過(guò)濾器。并且通過(guò)這種方式創(chuàng)建出來(lái)的布隆過(guò)濾器,是能夠自動(dòng)縮放的。

每一次擴(kuò)容,新的子過(guò)濾器是用前一個(gè)子過(guò)濾器的大小來(lái)進(jìn)行擴(kuò)張,默認(rèn)擴(kuò)張倍數(shù)為2.

BF.ADD類似于集合的sadd命令,不過(guò)bf.add一次只能添加一個(gè)元素到集合中。一次性添加多個(gè)則使用bf.madd.

2.3、BF.EXISTS 和 BF.MEXISTS

上面也已經(jīng)用到了,它就是用來(lái)判斷元素是否在布隆過(guò)濾器中

語(yǔ)法:

bf.exists key value
 bf.mexists key value1 value2 ...

存在返回1,不存在返回0

2.4、BF.INFO

返回有關(guān)布隆過(guò)濾器的信息,

語(yǔ)法格式:

bf.info key

Capacity #  子過(guò)濾器的上限
 (integer) 100
 Size #布隆過(guò)濾器的容量大小
 (integer) 296 
 Number of filters  #當(dāng)前過(guò)濾器數(shù)量 這里應(yīng)該是記錄子過(guò)濾器數(shù)量吧
 (integer) 1
 Number of items inserted # 插入的值的數(shù)量
 (integer) 1
 Expansion rate #默認(rèn)的擴(kuò)張倍數(shù)
 (integer) 2

一個(gè)數(shù)據(jù)看不出來(lái),多插入兩條,看一下對(duì)比,大家就明白了

2.5、BF.RESERVE

語(yǔ)法格式:

bf.reserve key error_rate capacity [EXPANSION expansion] [NONSCALING]

使用bf.reserve命令創(chuàng)建一個(gè)自定義的布隆過(guò)濾器。bf.reserve命令有三個(gè)參數(shù),分別是:

key
error_rate
capacity

然后還有兩個(gè)可選參數(shù):EXPANSIONNONSCALING

1、EXPANSION:簡(jiǎn)單說(shuō)它就是擴(kuò)張倍數(shù),省略則默認(rèn)為2。

如果要存儲(chǔ)在過(guò)濾器中的元素?cái)?shù)量未知,我們建議您使用expansion2 或更多來(lái)減少子過(guò)濾器的數(shù)量。否則,我們建議您使用expansion1 來(lái)減少內(nèi)存消耗。默認(rèn)擴(kuò)展值為 2。

2、NONSCALING:如果寫(xiě)了這個(gè)參數(shù),在達(dá)到初始容量,為防止過(guò)濾器創(chuàng)建額外的子過(guò)濾器。過(guò)濾器在達(dá)到容量時(shí)會(huì)返回錯(cuò)誤capacity,當(dāng)讓非縮放過(guò)濾器比縮放過(guò)濾器需要的內(nèi)存略少。

示例:

bf.reserve nzc:redisboom1 0.01 100
 bf.reserve nzc:redisboom2 0.01 100  EXPANSION 1 
 bf.reserve nzc:redisboom3 0.01 100  NONSCALING

我把相關(guān)的信息都打印出來(lái)了,大家從所輸出的信息中也能夠看出它們的一些區(qū)別。

小結(jié):

  • 如果是預(yù)估不到數(shù)據(jù)的范圍量,而且沒(méi)有辦法計(jì)算的增長(zhǎng)量,那么我覺(jué)得暫定為默認(rèn)的即可。
  • 如果是能夠估算數(shù)據(jù)的大致范圍,數(shù)據(jù)增長(zhǎng)速度有跡可循,那么可以適當(dāng)?shù)耐扑阋幌?code>EXPANSION這個(gè)參數(shù)該設(shè)置的大小。
  • 如果數(shù)據(jù)范圍沒(méi)有那么那么大,并且可以接受較大程度的誤判率,那么EXPANSION設(shè)置為1會(huì)更好,能夠節(jié)省內(nèi)存消耗。
  • NONSCALING如果使用此參數(shù),則是將數(shù)組大小固定了,需要考慮清楚是否適合。
  • 布隆過(guò)濾器的error_rate越小,需要的存儲(chǔ)空間就越大,對(duì)于不需要過(guò)于精確的場(chǎng)景,error_rate設(shè)置稍大一點(diǎn)也可以。布隆過(guò)濾器的capacity設(shè)置的過(guò)大,會(huì)浪費(fèi)存儲(chǔ)空間,設(shè)置的過(guò)小,就會(huì)影響準(zhǔn)確率,所以在使用之前一定要盡可能地精確估計(jì)好元素?cái)?shù)量,還需要加上一定的冗余空間以避免實(shí)際元素可能會(huì)意外高出設(shè)置值很多??傊?,error_ratecapacity都需要設(shè)置一個(gè)合適的數(shù)值。

2.6、BF.INSERT

語(yǔ)法格式

BF.INSERT key [CAPACITY capacity] [ERROR error]
   [EXPANSION expansion] [NOCREATE] [NONSCALING] ITEMS item [item...]

由中括號(hào)包裹的都是可選參數(shù)。大都數(shù)參數(shù)上面都說(shuō)到了

NOCREATE指示如果過(guò)濾器不存在,則不應(yīng)創(chuàng)建它。如果過(guò)濾器尚不存在,則返回錯(cuò)誤而不是自動(dòng)創(chuàng)建它。這可以用于過(guò)濾器創(chuàng)建和過(guò)濾器添加之間需要嚴(yán)格分離的地方。

示例:

BF.INSERT nzc:redisboom4  items key1 key2 key3

補(bǔ)充:

BF.SCANDUMP # 開(kāi)始布隆過(guò)濾器的增量保存。這對(duì)于無(wú)法適應(yīng)法線DUMP和RESTORE模型的大型布隆過(guò)濾器很有用。
 BF.LOADCHUNK  #恢復(fù)以前使用保存的過(guò)濾器SCANDUMP。

到此這篇關(guān)于Redis布隆過(guò)濾器的相關(guān)命令的使用的文章就介紹到這了,更多相關(guān)Redis布隆過(guò)濾器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于 Redis 的 JWT令牌失效處理方案(實(shí)現(xiàn)步驟)

    基于 Redis 的 JWT令牌失效處理方案(實(shí)現(xiàn)步驟)

    當(dāng)用戶登錄狀態(tài)到登出狀態(tài)時(shí),對(duì)應(yīng)的JWT的令牌需要設(shè)置為失效狀態(tài),這時(shí)可以使用基于Redis 的黑名單方案來(lái)實(shí)現(xiàn)JWT令牌失效,本文給大家分享基于 Redis 的 JWT令牌失效處理方案,感興趣的朋友一起看看吧
    2024-03-03
  • 一次關(guān)于Redis內(nèi)存詭異增長(zhǎng)的排查過(guò)程實(shí)戰(zhàn)記錄

    一次關(guān)于Redis內(nèi)存詭異增長(zhǎng)的排查過(guò)程實(shí)戰(zhàn)記錄

    這篇文章主要給大家分享了一次關(guān)于Redis內(nèi)存詭異增長(zhǎng)的排查過(guò)程實(shí)戰(zhàn)記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Redis中ziplist壓縮列表的實(shí)現(xiàn)

    Redis中ziplist壓縮列表的實(shí)現(xiàn)

    本文主要介紹了Redis中ziplist壓縮列表的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 在redis中存儲(chǔ)ndarray的示例代碼

    在redis中存儲(chǔ)ndarray的示例代碼

    在Redis中存儲(chǔ)NumPy數(shù)組(ndarray)通常需要將數(shù)組轉(zhuǎn)換為二進(jìn)制格式,然后將其存儲(chǔ)為字符串,這篇文章給大家介紹了在redis中存儲(chǔ)ndarray的示例代碼,感興趣的朋友一起看看吧
    2024-02-02
  • Redis五種數(shù)據(jù)結(jié)構(gòu)在JAVA中如何封裝使用

    Redis五種數(shù)據(jù)結(jié)構(gòu)在JAVA中如何封裝使用

    本篇博文就針對(duì)Redis的五種數(shù)據(jù)結(jié)構(gòu)以及如何在JAVA中封裝使用做一個(gè)簡(jiǎn)單的介紹。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • Redis的Cluster集群搭建的實(shí)現(xiàn)步驟

    Redis的Cluster集群搭建的實(shí)現(xiàn)步驟

    本文檔只對(duì)Redis的Cluster集群做簡(jiǎn)單的介紹,并沒(méi)有對(duì)分布式系統(tǒng)的所涉及到的概念做深入的探討。感興趣的小伙伴們可以參考一下
    2021-07-07
  • Redis的Sentinel解決方案介紹與運(yùn)行機(jī)制

    Redis的Sentinel解決方案介紹與運(yùn)行機(jī)制

    這篇文章主要介紹了Redis的Sentinel解決方案介紹與運(yùn)行機(jī)制, Sentinel 是一款面向分布式服務(wù)架構(gòu)的輕量級(jí)流量控制組件,主要以流量為切入點(diǎn),從流量控制、熔斷降級(jí)、系統(tǒng)自適應(yīng)保護(hù)等多個(gè)維度來(lái)保障服務(wù)的穩(wěn)定性,需要的朋友可以參考下
    2023-07-07
  • 一文帶你深入理解Redis的主從架構(gòu)

    一文帶你深入理解Redis的主從架構(gòu)

    Redis主從架構(gòu)是一種分布式數(shù)據(jù)庫(kù)架構(gòu),它包括一個(gè)主節(jié)點(diǎn)(Master)和一個(gè)或多個(gè)從節(jié)點(diǎn)(Slave),主節(jié)點(diǎn)處理所有寫(xiě)操作,從節(jié)點(diǎn)負(fù)責(zé)復(fù)制主節(jié)點(diǎn)的數(shù)據(jù)并處理讀請(qǐng)求,本文將帶大家深入理解Redis主從架構(gòu),需要的朋友可以參考下
    2023-09-09
  • 使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動(dòng)態(tài)泛型傳參的問(wèn)題

    使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動(dòng)態(tài)泛型傳參的問(wèn)題

    這篇文章主要介紹了使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動(dòng)態(tài)泛型傳參的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • WINDOWS中REDIS主從配置實(shí)現(xiàn)代碼解析

    WINDOWS中REDIS主從配置實(shí)現(xiàn)代碼解析

    這篇文章主要介紹了WINDOWS中REDIS主從配置實(shí)現(xiàn)代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評(píng)論