如何將分頁數據 放入redis
1 回答

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
普通分頁
一般分頁做緩存都是直接查找出來,按頁放到緩存里,但是這種緩存方式有很多缺點。
如緩存不能及時更新,一旦數據有變化,所有的之前的分頁緩存都失效了。
比如像微博這樣的場景,微博下面現在有一個頂次數的排序。這個用傳統的分頁方式很難應對。
一種思路
最近想到了另一種思路。
數據以ID為key緩存到Redis里;
把數據ID和排序打分存到Redis的skip list,即zset里;
當查找數據時,先從Redis里的skip list取出對應的分頁數據,得到ID列表。
用multi get從redis上一次性把ID列表里的所有數據都取出來。如果有缺少某些ID的數據,再從數據庫里查找,再一塊返回給用戶,并把查出來的數據按ID緩存到Redis里。
在最后一步,可以有一些小技巧:
比如在缺少一些ID數據的情況下,先直接返回給用戶,然后前端再用ajax請求缺少的ID的數據,再動態刷新。
還有一些可能用Lua腳本合并操作的優化,不過考慮到Lua腳本比較慢,可能要仔細測試。
如果是利用Lua腳本的話,可以在一個請求里完成下面的操作:
查找某頁的所有文章,返回已緩存的文章的ID及內容,還有不在緩存里的文章的ID列表。
- 1 回答
- 0 關注
- 1320 瀏覽
添加回答
舉報
0/150
提交
取消