一、需求
最近公司平臺升級,考慮到性能問題領導讓一些熱點數據做緩存,而產品和運營則要求用戶在進入某一列表後下拉更多的時候,假如後臺數據發生改變,當前用戶數據不能改變。
舉例:用戶看視頻列表:當前庫裏排序 1,2,4,3,6,5;以上數字代表某個視頻列表
用戶A進行該視頻頁,假設分頁長度爲2,目前用戶看到的視頻列表:1,2;正常情況下用戶點擊更多時應該顯示4,3;這時用戶手機列表顯示的是1,2,4,3;但 在用戶點擊更多時數據庫數據發生變化1,9,2,4,3,6,5;新增了一條數據9,這種情況下如何直接從數據庫獲取數據,用戶界面列表會這樣顯示,1,2,2,4;產品和運營認爲很不合理,領導就開始跟運營撕逼。最後官司打到老闆,老闆拍板結果你懂得。
二、解決方案
1)數據緩存,這是必須的。
2) 考慮用戶不會查看多頁之後的數據,我們可以這樣做,先從數據庫拿指定限制長度的數據放入緩存;用戶取數據時如果緩存有數據就從緩存取,沒有則在數據庫取。
3) 代碼儘量無侵入,切面最好的實現方式。
說話容易擼碼難;看實現吧。
三、流程
三、代碼
https://gitee.com/benxiaohai52/cache-page.git
該框架經過測試,且在線上項目使用,由於時間原因,代碼還俱有一定的侵入性。後續會逐漸改造