這篇文章將為大家詳細講解有關redis緩存實現(xiàn)分頁,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)公司主營昭平網站建設的網絡公司,主營網站建設方案,成都app開發(fā),昭平h5小程序制作搭建,昭平網站營銷推廣歡迎昭平等地區(qū)企業(yè)咨詢在實際業(yè)務中我們會將一些熱數(shù)據(jù)緩存到redis里面,這時候數(shù)據(jù)量比較大的話,我們就要對這些熱數(shù)據(jù)進行分頁,分頁的方式有2種:
第一:從redis拿出所有數(shù)據(jù)后,再做內存分頁(不推薦),熱點數(shù)據(jù)小的時候可以這樣做,性能相差不是很大,但是當數(shù)據(jù)量大的時候,分頁期間就會占用大量內存,或撐爆;
第二:基于redis的數(shù)據(jù)結構做緩存分頁,這里又分2種
①:基于redis的list數(shù)據(jù)結構,直接通過list的數(shù)據(jù)結構,用range方法可以進行分頁,在數(shù)據(jù)量大的時候,性能也很可觀,但是當存在接口高并發(fā)訪問時,這個list可能會無限延長,且里面的數(shù)據(jù)會存在很多重復,這就會影響到正常的業(yè)務(不是很推薦);
②:基于redis的ZSet數(shù)據(jù)結構,通過Zset這個有序集合我們也可以做分頁,同樣也是用range方法,但是這里比較麻煩的是在初始化數(shù)據(jù)的時候Zset必須存放TypedTuple類型的數(shù)據(jù),這個類型是一個value和score的鍵值對,具體可以查百度,這個score的生成比較麻煩我這邊測試時用的是當前數(shù)據(jù)在這個list的位置,然后Zset是根據(jù)這個score值來排序的,默認是從小到大;用這個的好處是,即使在高并發(fā)情況下Zset中也不會存在重復數(shù)據(jù)從而影響正常的業(yè)務;而且分頁效率也和list結構差不多;
③:用hash和Zset來一起實現(xiàn);這個是問了一個朋友和得知的,Zset中存儲有序的id字段,通過分頁后拿到id,然后再用id去hash中取,感覺應該效率相差不大的,只是中間多了層從hash結構取,還需要維護又一個hash;(為何這樣做我也不清楚);
貼一張我測試list和ZSet的結果圖
關于redis緩存實現(xiàn)分頁就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。