您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關redis緩存實現分頁,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在實際業務中我們會將一些熱數據緩存到redis里面,這時候數據量比較大的話,我們就要對這些熱數據進行分頁,分頁的方式有2種:
第一:從redis拿出所有數據后,再做內存分頁(不推薦),熱點數據小的時候可以這樣做,性能相差不是很大,但是當數據量大的時候,分頁期間就會占用大量內存,或撐爆;
第二:基于redis的數據結構做緩存分頁,這里又分2種
①:基于redis的list數據結構,直接通過list的數據結構,用range方法可以進行分頁,在數據量大的時候,性能也很可觀,但是當存在接口高并發訪問時,這個list可能會無限延長,且里面的數據會存在很多重復,這就會影響到正常的業務(不是很推薦);
②:基于redis的ZSet數據結構,通過Zset這個有序集合我們也可以做分頁,同樣也是用range方法,但是這里比較麻煩的是在初始化數據的時候Zset必須存放TypedTuple類型的數據,這個類型是一個value和score的鍵值對,具體可以查百度,這個score的生成比較麻煩我這邊測試時用的是當前數據在這個list的位置,然后Zset是根據這個score值來排序的,默認是從小到大;用這個的好處是,即使在高并發情況下Zset中也不會存在重復數據從而影響正常的業務;而且分頁效率也和list結構差不多;
③:用hash和Zset來一起實現;這個是問了一個朋友和得知的,Zset中存儲有序的id字段,通過分頁后拿到id,然后再用id去hash中取,感覺應該效率相差不大的,只是中間多了層從hash結構取,還需要維護又一個hash;(為何這樣做我也不清楚);
貼一張我測試list和ZSet的結果圖
關于redis緩存實現分頁就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。