一、需求
最近公司平台升级,考虑到性能问题领导让一些热点数据做缓存,而产品和运营则要求用户在进入某一列表后下拉更多的时候,假如后台数据发生改变,当前用户数据不能改变。
举例:用户看视频列表:当前库里排序 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
该框架经过测试,且在线上项目使用,由于时间原因,代码还俱有一定的侵入性。后续会逐渐改造