日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

ubuntu16.04安装,使用redis布隆过滤器示例

發(fā)布時(shí)間:2024/2/28 Ubuntu 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ubuntu16.04安装,使用redis布隆过滤器示例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡言

1. 環(huán)境:ubuntu16.04,redis版本:5.0.7,布隆過濾器實(shí)現(xiàn)版本:RedisBloom1.1.1

2. 默認(rèn)情況,下載安裝redis時(shí)是不帶布隆過濾器功能的,它是以插件的形式提供服務(wù),需要手動(dòng)加載(修改配置文件后重啟redis或者用命令module load來動(dòng)態(tài)加載)

3. RedisBloom的官方地址:https://github.com/RedisBloom/RedisBloom

4. 預(yù)設(shè)布隆過濾器的空間時(shí),如果不知道誤判率,容量,實(shí)際占用空間,哈希函數(shù)個(gè)數(shù)設(shè)置多少合適,可以在這個(gè)網(wǎng)站計(jì)算?https://hur.st/bloomfilter/?n=10000&p=0.001&m=&k=

下載安裝

1. 運(yùn)行命令?wget https://github.com/RedisLabsModules/rebloom/archive/v1.1.1.tar.gz,我們這里下載的是1.1.1版本,還有其他版本供選擇

2. 運(yùn)行命令?tar -zxvf v1.1.1.tar.gz 解壓,解壓后的文件夾如下

3. 進(jìn)入目錄?RedisBloom-1.1.1后,運(yùn)行命令 make 即可編譯出so文件,如下

4. 打開我們r(jià)edis-server用的配置文件redis.conf,在MODULES模塊下添加一行 loadmodule /usr/local/redis/redis-stable/RedisBloom-1.1.1/rebloom.so,?如下圖

5. 重新啟動(dòng)redis-server(注意:一定要使用我們剛才修改的redis.conf配置文件),連接進(jìn)redis,運(yùn)行命令可以查看所有已加載的module,可以看到布隆過濾器(模塊名:bf,版本:10101)

使用示例

1. bf.add 往一個(gè)布隆過濾器中添加單個(gè)元素(若該過濾器不存在時(shí),會(huì)自動(dòng)創(chuàng)建),成功添加返回1,失敗返回0

2. bf.madd 往一個(gè)布隆過濾器中添加多個(gè)元素(若該過濾器不存在時(shí),會(huì)自動(dòng)創(chuàng)建),返回一個(gè)數(shù)組,和請求參數(shù)一一對應(yīng),成功的為1,失敗的為0

3. bf.exists 判斷是否存在一個(gè)元素,存在的返回1,不存在的返回0,注意:布隆過濾器的最大特點(diǎn),它返回0時(shí)表示元素一定不存在;返回1時(shí)元素大概率是存在的,極小概率不存在,這個(gè)誤判概率到底有多大決定于我們給它的配置

4. bf.mexists 判斷多個(gè)元素是否存在,返回一個(gè)數(shù)組,和請求參數(shù)一一對應(yīng),存在的為1,不存在的為0,注意:同樣存在誤判概率

5. bf.debug 查看一個(gè)布隆過濾器的信息

第一行的size表當(dāng)前元素?cái)?shù),這里為7,注意這個(gè)值很大時(shí)不一定準(zhǔn)確

第二行表第一層數(shù)據(jù)塊的信息,我們沒有使用bf.reserve指定配置時(shí),布隆過濾器會(huì)自動(dòng)初始化,當(dāng)添加的元素超過當(dāng)前容量時(shí),會(huì)自動(dòng)初始化下一層數(shù)據(jù)塊

bytes 表該層數(shù)據(jù)的字節(jié)數(shù),128也就是128字節(jié)

bits 表該層數(shù)據(jù)的位數(shù),1024也就是1024個(gè)位,其實(shí)就是前面的128字節(jié)*8=1024位

hashes 表哈希函數(shù)的個(gè)數(shù)

hashwitdth 不清楚,以后再研究

capacity 表該層的最大容量,106表最多可以放106個(gè)元素

size 表該層目前的元素?cái)?shù)

ratio 表誤判率,就是前面的bf.exists返回的誤判率

6. bf.reserve 預(yù)設(shè)一個(gè)布隆過濾器的初始值,參數(shù)依次為:過濾器名字,誤判率,容量,容量只是我們建議的容量,它會(huì)根據(jù)實(shí)際情況調(diào)整

技巧

如果不知道誤判率,容量,實(shí)際占用空間,哈希函數(shù)個(gè)數(shù)這些設(shè)置多少合適,可以到這個(gè)網(wǎng)站上計(jì)算?https://hur.st/bloomfilter/?n=10000&p=0.001&m=&k=?輸入容量,誤判率后它會(huì)自動(dòng)計(jì)算出來

如下圖所示:

預(yù)設(shè)容量為10000,誤判率為0.001(也就是0.1%)時(shí),最佳的哈希函數(shù)是10個(gè)(這個(gè)影響布隆過濾器的效率),預(yù)計(jì)占用容量17.55K

你可以單獨(dú)修改容量,這時(shí)哈希函數(shù)的個(gè)數(shù)就會(huì)增加;也可以單獨(dú)修改哈希函數(shù)的個(gè)數(shù),這時(shí)容量就會(huì)增加

想要最佳容量和性能時(shí),建議使用它給的數(shù)值即可,這個(gè)是最優(yōu)解,至于其中的數(shù)學(xué)證明知乎上有一篇不錯(cuò)文章可以自行搜索

總結(jié)

以上是生活随笔為你收集整理的ubuntu16.04安装,使用redis布隆过滤器示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。