缓存的基本实现
接下来以根据父节点查询子节点演示缓存功能:
@Override
public List<CategoryEntity> querySubCategories(Long pid) {
// 从缓存中获取
String cacheCategories = this.redisTemplate.opsForValue().get(CATEGORY_CACHE_KEY_PREFIX + pid);
if (StringUtils.isNotBlank(cacheCategories)){
// 如果缓存中有,直接返回
List<CategoryEntity> categoryEntities = JSON.parseArray(cacheCategories, CategoryEntity.class);
return categoryEntities;
}
// 如果缓存中没有则调用远程接口获取
Resp<List<CategoryEntity>> subCategoryResp = this.gmallPmsFeign.querySubCategory(pid);
List<CategoryEntity> categoryEntities = subCategoryResp.getData();
// 把查询结果放入缓存
this.redisTemplate.opsForValue().set(CATEGORY_CACHE_KEY_PREFIX + pid, JSON.toJSONString(cacheCategories));
return categoryEntities;
}
查询一级分类的缓存功能请自行实现。
测试: