本發(fā)明屬于物流領(lǐng)域,特別涉及一種基于redis的億級(jí)單號(hào)去重的方法、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、隨著快遞業(yè)務(wù)的快速發(fā)展、各渠道電商業(yè)務(wù)系統(tǒng)的接入,各業(yè)務(wù)場(chǎng)景單號(hào)去重校驗(yàn)。但是目前的單號(hào)檢驗(yàn)過慢,內(nèi)存使用過高,為了保障單號(hào)去重校驗(yàn)系統(tǒng)的穩(wěn)定性和服務(wù)效率的提升,企業(yè)需要切實(shí)可行的億級(jí)單號(hào)去重的方法解決方案。基于此,特提出本方案。
技術(shù)實(shí)現(xiàn)思路
1、發(fā)明目的:為了克服現(xiàn)有技術(shù)中存在的不足,本發(fā)明提供一種基于redis的億級(jí)單號(hào)去重的方法、電子設(shè)備及存儲(chǔ)介質(zhì),能夠?qū)崿F(xiàn)超大數(shù)據(jù)量的存儲(chǔ),且減少內(nèi)存占用,提升物流單號(hào)的查重效率。
2、技術(shù)方案:為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下:
3、第一方面,一種基于redis的億級(jí)單號(hào)去重的方法:
4、所述redis數(shù)據(jù)結(jié)構(gòu)包括set結(jié)構(gòu)和bitmap結(jié)構(gòu);
5、統(tǒng)計(jì)導(dǎo)入的物流單號(hào)的數(shù)量,通過物流單號(hào)的數(shù)量進(jìn)行動(dòng)態(tài)的選擇存儲(chǔ)結(jié)構(gòu);
6、若物流單號(hào)的數(shù)量不超過設(shè)定閾值,則通過set結(jié)構(gòu)存儲(chǔ)物流單號(hào)數(shù)據(jù);
7、若物流單號(hào)的數(shù)量超過設(shè)定閾值,則通過bitmap結(jié)構(gòu)存儲(chǔ)物流單號(hào)數(shù)據(jù);
8、當(dāng)有新的物流單號(hào)需要去重時(shí),將物流單號(hào)作為成員添加到對(duì)應(yīng)的set結(jié)構(gòu)或bitmap結(jié)構(gòu)的集合中,驗(yàn)證所述物流單號(hào)是否已經(jīng)存在于set結(jié)構(gòu)或bitmap結(jié)構(gòu)的集合中。
9、進(jìn)一步地,當(dāng)物流單號(hào)的數(shù)量超過設(shè)定閾值時(shí),由所述set結(jié)構(gòu)轉(zhuǎn)換為bitmap結(jié)構(gòu)。
10、進(jìn)一步地,在步驟1中,由set結(jié)構(gòu)轉(zhuǎn)變?yōu)閎itmap結(jié)構(gòu)的條件為:所
11、述物流單號(hào)在預(yù)定數(shù)量范圍內(nèi),所述set結(jié)構(gòu)所需內(nèi)存接近或等于所述bitmap結(jié)構(gòu)所需內(nèi)存時(shí)。
12、進(jìn)一步地,將物流單號(hào)拆分為兩第一部分和第二部分,取物流單號(hào)的后8位并將其轉(zhuǎn)換為數(shù)值類型以形成第一部分;取去掉后8位后的內(nèi)容以形成第二部分,且所述第二部分作為redis?key的元素之一。
13、進(jìn)一步地,同時(shí)將物流單號(hào)寫入到set結(jié)構(gòu)和bitmap結(jié)構(gòu)中;
14、或,在將物流單號(hào)寫入到set結(jié)構(gòu)中時(shí),同步寫入到bitmap結(jié)構(gòu)中。
15、進(jìn)一步地,在所述set結(jié)構(gòu)轉(zhuǎn)換為所述bitmap結(jié)構(gòu)的過程中,優(yōu)先查詢所述set結(jié)構(gòu)。
16、進(jìn)一步地,在步驟1中,當(dāng)查重時(shí),先判斷該消息是否已存在于set結(jié)構(gòu)中,如果存在則表明物流單號(hào)已存在;如果不存在則表明是新的物流單號(hào)。
17、進(jìn)一步地,在步驟1中,將物流單號(hào)映射到bitmap結(jié)構(gòu)上的特定位置上,然后使用setbit命令設(shè)置該位的值為1;當(dāng)查重時(shí),先使用getbit命令查看該位的值,如果值為1,則標(biāo)識(shí)該物流單號(hào)存在;如果值為0,則表明為新的物流單號(hào)。
18、第二方面,一種電子設(shè)備,所述電子設(shè)備包括存儲(chǔ)器和處理器,所述存儲(chǔ)器中存儲(chǔ)有程序指令,所述處理器運(yùn)行所述程序指令時(shí),執(zhí)行第一方面中任一項(xiàng)所述方法中的步驟。
19、第三方面,一種存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)第一方面中任一項(xiàng)所述方法的步驟。
20、有益效果:本發(fā)明根據(jù)物流單號(hào)的數(shù)量,通過物流單號(hào)的數(shù)量進(jìn)行動(dòng)態(tài)的選擇存儲(chǔ)結(jié)構(gòu),能夠動(dòng)態(tài)的選擇set結(jié)構(gòu)和bitmap結(jié)構(gòu),在低數(shù)量時(shí)利用set結(jié)構(gòu)進(jìn)行存儲(chǔ),占用內(nèi)存小,且能夠準(zhǔn)確的進(jìn)行物流單號(hào)的查找和查重,準(zhǔn)確度高效率高。當(dāng)物流單號(hào)數(shù)量較大時(shí),利用bitmap結(jié)構(gòu)能夠?qū)崿F(xiàn)超大數(shù)據(jù)量的存儲(chǔ),且減少內(nèi)存占用,提升物流單號(hào)的查重效率。
1.一種基于redis的億級(jí)單號(hào)去重的方法,其特征在于,
2.根據(jù)權(quán)利要求1所述的一種基于redis的億級(jí)單號(hào)去重的方法,其特征在于,當(dāng)物流單號(hào)的數(shù)量超過設(shè)定閾值時(shí),由所述set結(jié)構(gòu)轉(zhuǎn)換為bitmap結(jié)構(gòu)。
3.根據(jù)權(quán)利要求2所述的一種基于redis的億級(jí)單號(hào)去重的方法,其特征在于,在步驟1中,由set結(jié)構(gòu)轉(zhuǎn)變?yōu)閎itmap結(jié)構(gòu)的條件為:所
4.根據(jù)權(quán)利要求2所述的一種基于redis的億級(jí)單號(hào)去重的方法,其特征在于,將物流單號(hào)拆分為兩第一部分和第二部分,取物流單號(hào)的后8位并將其轉(zhuǎn)換為數(shù)值類型以形成第一部分;取去掉后8位后的內(nèi)容以形成第二部分,且所述第二部分作為redis?key的元素之一。
5.根據(jù)權(quán)利要求2所述的一種基于redis的億級(jí)單號(hào)去重的方法,其特征在于,同時(shí)將物流單號(hào)寫入到set結(jié)構(gòu)和bitmap結(jié)構(gòu)中;
6.根據(jù)權(quán)利要求5所述的一種基于redis的億級(jí)單號(hào)去重的方法,其特征在于,在所述set結(jié)構(gòu)轉(zhuǎn)換為所述bitmap結(jié)構(gòu)的過程中,優(yōu)先查詢所述set結(jié)構(gòu)。
7.根據(jù)權(quán)利要求1所述的一種基于redis的億級(jí)單號(hào)去重的方法,其特征在于,在步驟1中,當(dāng)查重時(shí),先判斷該消息是否已存在于set結(jié)構(gòu)中,如果存在則表明物流單號(hào)已存在;如果不存在則表明是新的物流單號(hào)。
8.根據(jù)權(quán)利要求1所述的一種基于redis的億級(jí)單號(hào)去重的方法,其特征在于,在步驟1中,將物流單號(hào)映射到bitmap結(jié)構(gòu)上的特定位置上,然后使用setbit命令設(shè)置該位的值為1;當(dāng)查重時(shí),先使用getbit命令查看該位的值,如果值為1,則標(biāo)識(shí)該物流單號(hào)存在;如果值為0,則表明為新的物流單號(hào)。
9.一種電子設(shè)備,其特征在于,所述電子設(shè)備包括存儲(chǔ)器和處理器,所述存儲(chǔ)器中存儲(chǔ)有程序指令,所述處理器運(yùn)行所述程序指令時(shí),執(zhí)行權(quán)利要求1至8中任一項(xiàng)所述方法中的步驟。
10.一種存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1至8中任一項(xiàng)所述方法的步驟。