【郑州校区】品优购电商系统开发第 10 章 三
4.缓存品牌和规格数据
4.1 需求分析
将商品分类数据、品牌数据、和规格数据都放入 Redis 存储。
(1)当用户进入运营商后台的商品分类页面时,将商品分类数据放入缓存(Hash)。以分类名称作为 key ,以模板 ID 作为值
(2)当用户进入运营商后台的模板管理页面时,分别将品牌数据和规格数据放入缓存(Hash)。以模板 ID 作为 key,以品牌列表和规格列表作为值。
4.2 缓存商品分类数据
将商品分类表存入缓存 pinyougou-sellergoods-service 工程需要引入 pinyougou-common 工
程依赖。
修改 pinyougou-sellergoods-service 的 ItemCatServiceImpl.java,添加 redisTemplate
[AppleScript] 纯文本查看 复制代码 @Autowired
private RedisTemplate redisTemplate;
/**
* 根据上级 ID 查询列表
*/
@Override
public List<TbItemCat> findByParentId(Long parentId) {
TbItemCatExample example1=new TbItemCatExample();
Criteria criteria1 = example1.createCriteria();
criteria1.andParentIdEqualTo(parentId);
//每次执行查询的时候,一次性读取缓存进行存储 (因为每次增删改都要执行此方法)
List<TbItemCat> list = findAll();
for(TbItemCat itemCat:list){
redisTemplate.boundHashOps("itemCat").put(itemCat.getName(),
itemCat.getTypeId());
}
System.out.println("更新缓存:商品分类表");
return itemCatMapper.selectByExample(example1);
}
4.3 缓存品牌和规格列表数据
(1)修改 pinyougou-sellergoods-service 的 TypeTemplateServiceImpl.java
[AppleScript] 纯文本查看 复制代码 @Autowired
private RedisTemplate redisTemplate;
/**
* 将数据存入缓存
*/
private void saveToRedis(){
//获取模板数据
List<TbTypeTemplate> typeTemplateList = findAll();
//循环模板
for(TbTypeTemplate typeTemplate :typeTemplateList){
//存储品牌列表
List<Map> brandList = JSON.parseArray(typeTemplate.getBrandIds(),
Map.class);
redisTemplate.boundHashOps("brandList").put(typeTemplate.getId(),
brandList);
//存储规格列表
List<Map> specList = findSpecList(typeTemplate.getId());//根据模板 ID 查询
规格列表
redisTemplate.boundHashOps("specList").put(typeTemplate.getId(),
specList);
}
}
(2)在查询分页方法(findPage) 时调用此方法
[AppleScript] 纯文本查看 复制代码 public PageResult findPage(TbTypeTemplate typeTemplate, int pageNum, int pageSize) {
......
saveToRedis();//存入数据到缓存
return new PageResult(page.getTotal(), page.getResult());
}
这样在增删改后会自动调用该方法.
4.4 加载缓存数据
启动 redis ,运行运营商管理后台,打开商品分类和模板管理页,即可将数据放入缓存中。
|
|