写这篇文章,我们聊聊分页列表缓存,希望能帮助大家提升缓存技术认知。
1. 直接缓存分页列表结果
这是最简单易懂的方案,我们按照不同的分页条件查询出结果后,直接缓存分页结果 。
伪代码如下:
public List<Product> getPageList(String param,int page,int size) {
String key = "productList:page:" + page + "size:" + size +
"param:" + param ;
List<Product> dataList = cacheUtils.get(key);
if(dataList != null) {
return dataList;
}
dataList = queryFromDataBase(param,page,size);
if(dataList != null) {
cacheUtils.set(key , dataList , Constants.ExpireTime);
}
}
这种方案的优点是工程简单,性能也快,但是有一个明显的缺陷基因:列表缓存的颗粒度非常大。
假如列表中数据发生增删,为了保证数据的一致性,需要修改分页列表缓存。
有两种方式 :
1、依靠缓存过期来惰性的实现 ,但业务场景必须包容;
2