新聞中心
嗨,朋友們,你們好!今天我想與大家來分析一下Redis過濾器,它是一種常用的持久化數(shù)據(jù)庫,能夠處理大規(guī)模結(jié)構(gòu)化數(shù)據(jù)和大量細(xì)分?jǐn)?shù)據(jù)的功能。Redis過濾器的分布圖清晰地反映了它的設(shè)計(jì)原理。我們一起來探討一下。

創(chuàng)新互聯(lián)公司IDC提供業(yè)務(wù):重慶服務(wù)器托管,成都服務(wù)器租用,重慶服務(wù)器托管,重慶服務(wù)器租用等四川省內(nèi)主機(jī)托管與主機(jī)租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機(jī)房,BGP機(jī)房,電信機(jī)房,移動(dòng)機(jī)房,聯(lián)通機(jī)房。
Redis過濾器,也叫字典變換過濾器,它由一個(gè)固定大小的散列表和兩個(gè)指針組成,散列表的大小可以由用戶自行指定,它可以支持不同數(shù)據(jù)量的物品集合。散列表負(fù)責(zé)過濾器保存的字典,其中每一項(xiàng)記錄W1和S1,后者是一個(gè)狀態(tài)值,前者代表生成字典中物品的概率,因此可以根據(jù)物品的期望出現(xiàn)頻率對字典表進(jìn)行構(gòu)建和維護(hù)。
通常情況下,兩個(gè)指針各自指向散列表的第一個(gè)和最后一個(gè)元素。當(dāng)有新元素添加到過濾器中時(shí),指針前移,其后的元素依次前移直至達(dá)到期望概率,此時(shí)重新開始后移元素,其前面的物品根據(jù)新引入元素的概率從新重新排序。
以上就是Redis中字典轉(zhuǎn)換過濾器的分布圖。從上面可以看出,構(gòu)建字典和更新字典都是基于概率的,因此這一過程可以迅速完成,并且可以準(zhǔn)確度比較高,使用簡單方便。
值得一提的是,不同的物品在初始時(shí)的概率不同,在后續(xù)的更新中也可以根據(jù)實(shí)際情況進(jìn)行修改,使得期望的概率最終呈現(xiàn),從而達(dá)到更好的性能。
// 字典變換過濾器
dict_change_filter(I_list, n, S_list)
{
// 先將一個(gè)定長n的空散列表h和兩個(gè)指針p、q初始化
h = new HashTable[n];
p = 0;
q = 0;
// 將物品集中的每一個(gè)物品計(jì)算其期望出現(xiàn)的頻率,并分配給散列表h
for (i=0; i
// 計(jì)算物品期望出現(xiàn)的頻率
W = I_list[i] / S_list[i];
// 將每個(gè)物品的header記錄W和S,分配給散列表的元素
h[i].W = W;
h[i].S = S_list[i];
}
// 兩個(gè)指針共同來完成更新和構(gòu)建
while (p
// p每次移動(dòng)時(shí),將指針后面元素依次前移直至達(dá)到期望概率
for (i=p+1; i
if (h[i].W
exchange(h[i], h[p]);
// 重新開始后移元素,其前面的物品根據(jù)新引入元素的概率從新重新排序
else
p++;
}
}
// 返回過濾器
return h;
}
Redis過濾器是一種有效的高效的數(shù)據(jù)結(jié)構(gòu),它使用起來簡單方便,但需要根據(jù)實(shí)際情況調(diào)整其中的物品出現(xiàn)頻率,才能有效提升性能,讓Redis更易于使用。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。
當(dāng)前名稱:Redis過濾器的分布圖解讀(redis過濾器分布圖)
本文URL:http://www.5511xx.com/article/ccddehc.html


咨詢
建站咨詢
