這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)redis實(shí)現(xiàn)分頁查詢的方法,以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
基于SortedSet的分頁查詢緩存方案
首先想到的解決方法是使用@see ListOperations
這個(gè)會(huì)導(dǎo)致一個(gè)問題,當(dāng)緩存失效時(shí),并發(fā)的寫緩存會(huì)導(dǎo)致出現(xiàn)重復(fù)數(shù)據(jù),所以想到通過使用set來處理并發(fā)時(shí)的重復(fù)數(shù)據(jù),@see ZSetOperations
代碼邏輯如下:
range(key,start,limit)按照分頁條件獲取緩存,命中則直接返回 緩存未命中,查詢(沒有分頁條件)數(shù)據(jù)庫或是調(diào)用(沒有分頁)底層接口 add(key,valueScoreMap)寫入緩存,expire設(shè)置緩存時(shí)間 當(dāng)需要清理緩存時(shí),直接刪除key,如果是因?yàn)閿?shù)據(jù)新增和刪除,可以add(key,value,score)或remove(key,value)
redis中會(huì)按照score分值升序排列map中的數(shù)據(jù),一般的,score分值是sql語句的order by filedA的filedA的值,這樣能保證數(shù)據(jù)一致性
但是這種方式也存在一定問題:
這個(gè)key緩存的value確實(shí)是熱數(shù)據(jù),但可能只有少數(shù)數(shù)據(jù)被頻繁使用其余的可能根本就未被使用,比如數(shù)據(jù)有100頁,實(shí)際可能只會(huì)用到前10頁,這也會(huì)導(dǎo)致緩存空間的浪費(fèi),如果使用了redis虛擬內(nèi)存,也會(huì)有一定影響
sql查詢由原來的分頁查詢變成了不分頁查詢,緩存失效后,系統(tǒng)的處理能力較之前會(huì)有下降,尤其是對(duì)于大表。
上述就是小編為大家分享的redis實(shí)現(xiàn)分頁查詢的方法了,如果您也有類似的疑惑,不妨參照上述方法進(jìn)行嘗試。如果想了解更多相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。